public LogsAnalyzer(AnalyzerConfig analyzerConfig, ILogsReceiver logsReceiver, Dictionary <int, IAnalyzerRuleHandler> ruleHandlers, Dictionary <int, IAnalyzerOutputHandler> outputHandlers, Dictionary <int, IAnalyzerScheduleHandler> scheduleHandlers) { _analyzerConfig = analyzerConfig; _logsReceiver = logsReceiver; _ruleHandlers = ruleHandlers; _outputHandlers = outputHandlers; _scheduleHandlers = scheduleHandlers; _ruleHandlers.Values.ToList().ForEach(arh => arh.OnAnalyzerResult += OnAnalyzerResult); if (logsReceiver != null) { logsReceiver.OnNewLogMessage += LogsReceiver_OnNewLogMessage; } }
public static ILogsReceiver Create(string[] applicationArgs, AnalyzerConfig analyzerConfig) { ILogsReceiver logsReceiver = null; switch (analyzerConfig.LogsReceiverConfig.LogReceiverType) { case Common.Enums.LogReceiverTypes.AnonymousPipes: if (applicationArgs?.Length > 0) { logsReceiver = new AnonymousPipesLogsReceiver(applicationArgs[0]); } break; case Common.Enums.LogReceiverTypes.NamedPipes: logsReceiver = new NamedPipesLogsReceiver((NamedPipesReceiverConfig)analyzerConfig.LogsReceiverConfig); break; case Common.Enums.LogReceiverTypes.WindowsEventsViewer: string mircosoftEventViewerReceiverAssemblyFileName = "LogsManager.MircosoftEventViewerReceiverReceiver.dll"; IAnalyzerOutputHandler analyzerOutputHandler = null; string assemblyFileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, mircosoftEventViewerReceiverAssemblyFileName); if (File.Exists(assemblyFileName)) { var loggerAssembly = Assembly.LoadFrom(assemblyFileName); Type outputHandlerType = loggerAssembly.GetType("LogsManager.MircosoftEventViewerReceiver.EventLogsReceiver"); analyzerOutputHandler = (IAnalyzerOutputHandler)Activator.CreateInstance(outputHandlerType, analyzerConfig.LogsReceiverConfig); } break; } return(logsReceiver); }
public static void Main(string[] args) { try { AnalyzerConfig analyzerConfig = ConfigurationsFactory.GetAnalyzerConfig(); if (analyzerConfig?.IsEnabled ?? false) { ILogsReceiver logsReceiver = LogsReceiverFactory.Create(args, analyzerConfig); Dictionary <int, IAnalyzerRuleHandler> analyzerRuleHandlers = RuleHandlerFactory.CreateRulesHandlers(analyzerConfig); Dictionary <int, IAnalyzerOutputHandler> analyzerOutputHandlers = OutputsHandlersFactory.GetOutputsHandlers(analyzerConfig); Dictionary <int, IAnalyzerScheduleHandler> analyzerScheduleHandlers = SchedulesHandlersFactory.CreateSchedulesHandlers(analyzerConfig); _logsAnalyzer = new LogsAnalyzer(analyzerConfig, logsReceiver, analyzerRuleHandlers, analyzerOutputHandlers, analyzerScheduleHandlers); _logsAnalyzer.Start(); } Console.Write("Press enter to exit..."); Console.ReadLine(); _logsAnalyzer.Dispose(); System.Threading.Thread.Sleep(2000); } catch (Exception exception) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Error:"); Console.WriteLine(exception?.Message); } }