Beispiel #1
0
        private IOutputPlugin CreateOutputPlugin(string pluginType, string systemName, IConfigurationSection configurationSection)
        {
            _logger.SLT00013_Debug_Create_Output_pluginType_plugin_SystemName_systemName(pluginType, systemName);
            _logger.SLT00019_Trace_Main_buffer_settings_config_bufferSettingsConfig(_bufferSettingsConfig);

            if (pluginType == "Clickhouse")
            {
                var clickHousePluginConfig = new ClickhouseOutputConfig();

                configurationSection.Bind(clickHousePluginConfig);
                _logger.SLT00022_Trace_Plugin_output_config_clickHousePluginConfig(clickHousePluginConfig);

                if (clickHousePluginConfig.BufferSettings == null)
                {
                    clickHousePluginConfig.BufferSettings = _bufferSettingsConfig;
                    _logger.SLT00020_Debug_Child_settings_empty_Parent_config_is_applied();
                }
                else
                {
                    clickHousePluginConfig.BufferSettings.JoinWithParentBufferConfig(_bufferSettingsConfig);
                    _logger.SLT00021_Debug_Child_and_parent_settings_merged();
                }

                return(new ClickhouseOutputPlugin(clickHousePluginConfig, _metrics, _loggerFactory));
            }

            if (pluginType == "Forward")
            {
                var forwardOutputConfig = new ForwardOutputConfig();

                configurationSection.Bind(forwardOutputConfig);
                _logger.SLT00023_Trace_Plugin_output_config_forwardOutputConfig(forwardOutputConfig);

                if (forwardOutputConfig.BufferSettings == null)
                {
                    forwardOutputConfig.BufferSettings = _bufferSettingsConfig;
                    _logger.SLT00024_Debug_Child_settings_empty_Parent_config_is_applied();
                }
                else
                {
                    forwardOutputConfig.BufferSettings.JoinWithParentBufferConfig(_bufferSettingsConfig);
                    _logger.SLT00025_Debug_Child_and_parent_settings_merged();
                }

                return(new ForwardOutputPlugin(forwardOutputConfig, _loggerFactory));
            }

            return(null);
        }
        public ForwardOutputPlugin(ForwardOutputConfig config, ILoggerFactory loggerFactory)
        {
            _config             = config;
            _fileBuffer         = new FileBuffer(this, config.BufferSettings, loggerFactory);
            _updateServersTimer = new Timer
            {
                AutoReset = true,
                Interval  = 10000,
                Enabled   = true
            };

            _updateServersTimer.Elapsed += OnUpdateServersTimerElapsed;
            _logger = loggerFactory.CreateLogger(typeof(ForwardOutputPlugin));

            foreach (var server in config.Servers)
            {
                _workers.Add(new ForwardWorker(this, server));
            }

            UpdateServers();
        }