public static LogFileMonitor Create(string name, Guid identifier, string logFilename, Action <object, FileSystemEventArgs> changedOrCreatedAction) { var folder = Path.GetDirectoryName(logFilename); if (!Directory.Exists(folder)) { Directory.CreateDirectory(folder); } var monitor = new LogFileMonitor { Name = name, Identifier = identifier, LogFilename = logFilename, Watcher = new FileSystemWatcher { Path = folder, Filter = "*.*", EnableRaisingEvents = true, NotifyFilter = NotifyFilters.LastWrite }, IsMonitoring = true }; monitor.Watcher.Created += (sender, args) => changedOrCreatedAction(sender, args); monitor.Watcher.Changed += (sender, args) => changedOrCreatedAction(sender, args); return(monitor); }
public Guid AddMonitor(string name, string filename) { var identifier = Guid.NewGuid(); var monitor = LogFileMonitor.Create(name, identifier, filename, WatcherOnChangedOrCreated); _monitors.Add(monitor); return(identifier); }
private void PublishMessage(LogFileMonitor monitor, string filename = null, int?lastNEntries = null) { var logEntries = monitor.GetNewLogEntries(logfilename: filename, lastNEntries: lastNEntries); MessageBus .Current .SendMessage(new LogEntriesMessage( monitor.Name, monitor.Identifier, logEntries)); }