public void Configure()
        {
            var config = ConfigurationManager.GetSection("ReadWindowsEvents") as ReadWindowsEventPluginConfig;

            if (config == null)
            {
                throw new Exception("Cannot get configuration section : WindowsEvents");
            }
            var baseConfig = CollectdWinConfig.GetConfig();

            _interval           = baseConfig.GeneralSettings.Interval;
            _hostName           = Util.GetHostName();
            _intervalMultiplier = config.IntervalMultiplier;
            _intervalCounter    = 0;
            _events.Clear();

            foreach (WindowsEventConfig eventConfig in config.Events)
            {
                EventQuery evt = new EventQuery
                {
                    log         = eventConfig.Log,
                    source      = eventConfig.Source,
                    filterExp   = eventConfig.FilterExp,
                    minLevel    = eventConfig.MinLevel,
                    maxLevel    = eventConfig.MaxLevel,
                    maxPerCycle = eventConfig.MaxEventsPerCycle,
                    title       = eventConfig.Title,
                    minEventId  = eventConfig.MinEventId,
                    maxEventId  = eventConfig.MaxEventId
                };
                _events.Add(evt);
                Logger.Info("Added event reader {0}: log:{1}, source:{2}, level:{3}-{4}, ID:{5}-{6}, maxAllowed:{7}", evt.title, evt.log, evt.source, evt.minLevel, evt.maxLevel, evt.minEventId, evt.maxEventId, evt.maxPerCycle);
            }
            Logger.Info("ReadWindowsEvents plugin configured");
        }
        public void Configure()
        {
            var config = ConfigurationManager.GetSection("ReadSystemChecks") as ReadSystemChecksPluginConfig;

            if (config == null)
            {
                throw new Exception("Cannot get configuration section : ReadWindowsAttributes");
            }

            var baseConfig = CollectdWinConfig.GetConfig();

            _interval = baseConfig.GeneralSettings.Interval;

            _sendAgentHeartbeat = config.EnableAgentHeartbeat;
            _heartbeatInterval  = (int)Math.Ceiling(_interval * Math.Max(1.0, config.HeartbeatTTLMultiplier));
            Logger.Info("Agent heartbeat enabled: {0}, interval: {1}secs", _sendAgentHeartbeat, _heartbeatInterval);


            foreach (SystemCheckConfig check in config.Checks)
            {
                _checks.Add(check);
                Logger.Info("Added {0} '{1}' as '{2}' with interval {3} secs", check.GetType().Name, check.Name, check.Alias, check.GetTTL(_interval));
            }

            _hostName = Util.GetHostName();

            Logger.Info("ReadSystemChecks plugin configured");
        }