Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 3
0
        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);
            }
        }