示例#1
0
        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);
        }
示例#2
0
        public Guid AddMonitor(string name, string filename)
        {
            var identifier = Guid.NewGuid();
            var monitor    = LogFileMonitor.Create(name, identifier, filename, WatcherOnChangedOrCreated);

            _monitors.Add(monitor);
            return(identifier);
        }
示例#3
0
        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));
        }