刚刚开始使用单身来记录我的php项目中的错误,但我想将最小错误报告设置设置为"注意"及以上。立即使用的代码
use MonologErrorHandler;
$handler = new ErrorHandler($logger);
$handler->registerErrorHandler([], false);
$handler->registerExceptionHandler();
$handler->registerFatalHandler();
生成所有错误,包括通知。我如何设置
的等效error_reporting(e_all& 〜e_notice(;
使用独白
ErrorHandler
将捕获trigger_error
的所有级别,除非您使用@
操作员沉默它们或实际设置您的error_re_re_ports error_reporting(E_ALL & ~E_NOTICE);
由于某种原因您要保留错误报告,但同时滤除了哪些错误被单一错误处理程序捕获,我会选择扩展错误处理程序并进行注册。这样的东西:
class MyErrorHandler extends MonologErrorHandler{
public function handleError($code, $message, $file = '', $line = 0, $context = [])
{
if($code === E_NOTICE){
return;
}
parent::handleError($code, $message, $file, $line, $context);
}
}
use MyErrorHandler as ErrorHandler;
$handler = new ErrorHandler($logger);
$handler->registerErrorHandler([], false);
$handler->registerExceptionHandler();
$handler->registerFatalHandler();
请注意,我实际上没有测试过,但是我没有理由它行不通
独白记录级别与PHP记录级别无关。error_reporting()
设置的PHP日志记录级别控制PHP引擎本身在其自身输出中报告的内容类型。独白日志级别模拟了UNIX Syslog水平,旨在由应用程序驱动,而不是由PHP驱动。即,error_reporting()
处理PHP生成的消息,而独白处理您的应用程序生成的消息。例如,在您的应用程序中,当您发出日志时,您表示严重性:
if ($some_not_important_condition) {
$logger->info('foo');
}
if ($some_important_condition) {
$logger->error('bar');
}
因此,您的应用程序始终创建info
级别日志条目,这取决于运行时配置,以决定Ingore和/或它们的去向。例如,您可能会在开发中打印到屏幕上或在生产中登录Nagios。