static void Main(string[] args) { if (args.Length == 0) { return; } string dataDirectoryPath = args[0]; Console.WriteLine($"{DateTime.Now}: Инициализация чтения логов \"{dataDirectoryPath}\"..."); Console.WriteLine(); while (true) { TechJournalManager tjManager = new TechJournalManager(dataDirectoryPath); foreach (var tjDirectory in tjManager.Directories) { if (!tjDirectory.DirectoryData.Exists) { continue; } _lastLogDirectory = tjDirectory; TechJournalPosition lastPosition = null; if (_lastPositions.ContainsKey(tjDirectory.DirectoryData.Name)) { lastPosition = _lastPositions[tjDirectory.DirectoryData.Name]; } using (TechJournalReader tjReader = TechJournalReader.CreateReader(tjDirectory.DirectoryData.FullName)) { tjReader.AfterReadEvent += Reader_AfterReadEvent; tjReader.AfterReadFile += Reader_AfterReadFile; tjReader.BeforeReadEvent += Reader_BeforeReadEvent; tjReader.BeforeReadFile += Reader_BeforeReadFile; tjReader.OnErrorEvent += Reader_OnErrorEvent; tjReader.SetCurrentPosition(lastPosition); _eventNumber = 0; while (tjReader.Read()) { // tjReader.CurrentRow - данные текущего события // tjReader.CurrentRow.Properties - сырые данные события "как есть" без обработки в виде словаря Dictionary<string, string> _eventNumber += 1; _totalEventNumber += 1; } Console.WriteLine($"{DateTime.Now}: [{_lastLogDirectory}] Всего событий прочитано: ({_eventNumber})..."); } } Console.WriteLine(); Console.WriteLine($"{DateTime.Now}: Всего событий прочитано {_totalEventNumber}."); Console.WriteLine($"{DateTime.Now}: Ожидание новых событий..."); Thread.Sleep(5000); } }
static void Main(string[] args) { if (args.Length == 0) { return; } string dataDirectoryPath = args[0]; Console.WriteLine($"{DateTime.Now}: Инициализация чтения логов \"{dataDirectoryPath}\"..."); Console.WriteLine(); TechJournalManager tjManager = new TechJournalManager(dataDirectoryPath); foreach (var tjDirectory in tjManager.Directories) { _lastLogDirectory = tjDirectory; using (TechJournalReader tjReader = TechJournalReader.CreateReader(tjDirectory.DirectoryData.FullName)) { tjReader.AfterReadEvent += Reader_AfterReadEvent; tjReader.AfterReadFile += Reader_AfterReadFile; tjReader.BeforeReadEvent += Reader_BeforeReadEvent; tjReader.BeforeReadFile += Reader_BeforeReadFile; tjReader.OnErrorEvent += Reader_OnErrorEvent; Console.WriteLine($"{DateTime.Now}: [{_lastLogDirectory}] Всего событий к обработке: ({tjReader.Count()})..."); while (tjReader.Read()) { // tjReader.CurrentRow - данные текущего события // tjReader.CurrentRow.Properties - сырые данные события "как есть" без обработки в виде словаря Dictionary<string, string> _eventNumber += 1; _totalEventNumber += 1; } } } Console.WriteLine($"{DateTime.Now}: Всего событий прочитано: ({_totalEventNumber})..."); Console.WriteLine($"{DateTime.Now}: Для выхода нажмите любую клавишу..."); Console.ReadKey(); }
private void FillTechLogDirectories(string logFilePath) { Directories = new List <TechJournalDirectory>(); if (File.GetAttributes(logFilePath).HasFlag(FileAttributes.Directory)) { DirectoryInfo logDirectoryInfo = new DirectoryInfo(logFilePath); if (TechJournalDirectory.ParseDataFromDirectoryName(logDirectoryInfo.Name) && TechJournalDirectory.ContainsLogFiles(logFilePath)) { Directories.Add(new TechJournalDirectory(logFilePath)); } else { string[] techJournalSubDirectories = Directory.GetDirectories(logFilePath) .OrderBy(i => i) .ToArray(); foreach (var techJournalSubDirectory in techJournalSubDirectories) { DirectoryInfo techJournalSubDirectoryInfo = new DirectoryInfo(techJournalSubDirectory); if (TechJournalDirectory.ParseDataFromDirectoryName(techJournalSubDirectoryInfo.Name) && TechJournalDirectory.ContainsLogFiles(techJournalSubDirectoryInfo.FullName)) { Directories.Add(new TechJournalDirectory(techJournalSubDirectoryInfo.FullName)); } } } } else { FileInfo logFile = new FileInfo(logFilePath); DirectoryInfo logDirectoryInfo = logFile.Directory; if (logDirectoryInfo != null && TechJournalDirectory.ParseDataFromDirectoryName(logDirectoryInfo.Name) && TechJournalDirectory.ContainsLogFiles(logDirectoryInfo.FullName)) { Directories.Add(new TechJournalDirectory(logFilePath)); } } }