无论何时象如下这样改变一个服务的状态,你都应该实现一个写向PHP错误日志的ServiceLogger进程:
该log_current_status()方法意味着,如果进程发送一个SIGUSR1信号,它将把其完整的当前状态复制到你的PHP错误日志中。class ErrorLog_ServiceLogger implements ServiceLogger { public function log_service_event(ServiceCheck$service) { if($service->current_status() !==$service->previous_status()) { if($service->current_status() ===ServiceCheck::FAILURE) { $status = 'DOWN'; } else { $status = 'UP'; } error_log("{$service->description()} changed status to $status"); } } public function log_current_status(ServiceCheck$service) { error_log("{$service->description()}: $status"); } }
该引擎使用如下的一个配置文件:
当传递这个XML文件时,ServiceCheckRunner的构造器对于每一个指定的日志实例化一个日志记录程序。然后,它相应于每一个指定的服务实例化一个ServiceCheck对象。<config> <loggers> <logger> <id>errorlog</id> <class>ErrorLog_ServiceLogger</class> </logger> <logger> <id>emailme</id> <class>EmailMe_ServiceLogger</class> </logger> </loggers> <services> <service> <class>HTTP_ServiceCheck</class> <params> <description>OmniTI HTTP Check</description> <url>http://www.omniti.com</url> <timeout>30</timeout> <frequency>900</frequency> </params> <loggers> <logger>errorlog</logger> <logger>emailme</logger> </loggers> </service> <service> <class>HTTP_ServiceCheck</class> <params> <description>Home Page HTTP Check</description> <url>http://www.schlossnagle.org/~george</url> <timeout>30</timeout> <frequency>3600</frequency> </params> <loggers> <logger>errorlog</logger> </loggers> </service> </services> </config>