예제 #1
0
        public static Dictionary <int, IAnalyzerOutputHandler> GetOutputsHandlers(AnalyzerConfig analyzerConfig)
        {
            Dictionary <int, IAnalyzerOutputHandler> keyValuePairs = new Dictionary <int, IAnalyzerOutputHandler>();

            analyzerConfig.Outputs.ToList().ForEach(o =>
            {
                IAnalyzerOutputHandler analyzerOutputHandler = null;

                string assemblyFileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, _analyzerAssemblyFileName);

                if (o.OutputType == Common.Enums.OutputTypes.WindowsNotification)
                {
                    assemblyFileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "AnalyzerNotifications.dll");
                }

                if (File.Exists(assemblyFileName))
                {
                    var loggerAssembly = Assembly.LoadFrom(assemblyFileName);

                    Type outputHandlerType = loggerAssembly.GetType(_namespace + "." + o.OutputType.ToString() + "OutputHandler");

                    analyzerOutputHandler = (IAnalyzerOutputHandler)Activator.CreateInstance(outputHandlerType, o);
                }

                if (analyzerOutputHandler != null)
                {
                    keyValuePairs.Add(o.ID, analyzerOutputHandler);
                }
            });

            return(keyValuePairs);
        }
        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);
        }