private const int MONITORING_INTERVAL = 1000; // ms //--// static void Main( string[] args ) { ILogger logger = SafeLogger.FromLogger( MonitorLogger.Instance ); // try and open the GatewayService process string monitoringTarget = ConfigurationManager.AppSettings.Get( "MonitoringTarget" ); string monitoringExecutable = ConfigurationManager.AppSettings.Get( "TargetExecutable" ); string type = ConfigurationManager.AppSettings.Get( "TargetType" ); if(String.IsNullOrEmpty( monitoringTarget ) || String.IsNullOrEmpty( monitoringExecutable )) { logger.LogError( "Error in configuration, cannot start monitoring" ); return; } if(String.IsNullOrEmpty( type )) { logger.LogInfo( "No type specified, defaulting to 'process'" ); type = AbstractMonitor.ProcessType; return; } AbstractMonitor monitor = null; switch(type) { case AbstractMonitor.ProcessType: monitor = new ProcessMonitor( monitoringExecutable, logger ); break; case AbstractMonitor.ServiceType: monitor = new ServiceMonitor( monitoringTarget, logger ); break; default: throw new ArgumentException( String.Format( "Monitoring type {0} is unrecognized", type ) ); } monitor.MonitoringInterval = MONITORING_INTERVAL; if(monitor.Lock( monitoringTarget )) { monitor.Monitor(); } }