[英]PHP error logging with Syslog-NG
我已经使用Syslog-NG在监视服务器上收集了一些日志,这些日志是:
不幸的是,由于将它们视为PHP声明,因此不会引发任何错误( 请参阅本文 )。
因此,我想知道使用Syslog-NG处理PHP错误以使其真正被识别为错误的正确方法是什么。
这里有几件事/选项。 那篇文章没有提到将php.ini配置为使用syslog记录php内部的错误。 您需要设置
error_log = syslog
我假设这是在文章中提到的
PHP有一个烦人的习惯,即记录所有带有NOTICE错误级别的内容。
您可以以这种方式将错误日志记录打开到syslog,并按照该文章中建议的syslog voodoo进行操作,也可以以PHP方式进行操作 ,这就是说,我要使用更多的PHP来实现PHP错误和syslog错误级别之间的映射。
通过set_error_handler定义一个自定义错误处理程序,然后在处理程序中,将特定的PHP错误映射到某些特定的syslog错误级别,例如
function myErrorHandler($errno, $errstr, $errfile, $errline)
{
if (!(error_reporting() & $errno)) {
// This error code is not included in error_reporting
return;
}
switch ($errno) {
case E_USER_ERROR:
$str = "<b>My ERROR</b> [$errno] $errstr<br />\n" .
" Fatal error on line $errline in file $errfile" .
", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n" .
"Aborting...<br />\n";
syslog(LOG_CRIT, $errstr)
exit(1);
break;
case E_USER_WARNING:
// ...
}
使用set_exception_handler进行相同的操作也可能是一个好主意。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.