【问题标题】:Set minimum PHP error reporting in Monolog ErrorHandler在 Monolog ErrorHandler 中设置最小 PHP 错误报告
【发布时间】:2017-09-25 16:19:17
【问题描述】:

刚开始使用 Monolog 在我的 PHP 项目中记录错误,但我想将最小错误报告设置设置为 NOTICE 及以上。我现在使用的代码

use Monolog\ErrorHandler;    
$handler = new ErrorHandler($logger);

$handler->registerErrorHandler([], false);
$handler->registerExceptionHandler();
$handler->registerFatalHandler();

这会生成包括通知在内的所有错误。如何将等效设置为

error_reporting(E_ALL & ~E_NOTICE);

使用独白

【问题讨论】:

    标签: php error-handling monolog


    【解决方案1】:

    Monolog 日志级别与 PHP 日志级别无关。由error_reporting() 设置的 PHP 日志级别控制 PHP 引擎本身在其自己的输出中报告的内容类型。 Monolog 日志级别模拟 unix syslog 级别,旨在由应用程序驱动,而不是由 PHP。即,error_reporting() 处理 PHP 生成的消息,而 Monolog 处理您的应用程序生成的消息。例如,在您的应用程序中,当您发出日志时,您会指出其严重性:

    if ($some_not_important_condition) {
        $logger->info('foo');
    }
    if ($some_important_condition) {
        $logger->error('bar');
    }
    

    因此,您的应用始终会创建info 级别的日志条目,并且由运行时配置来决定输入哪些内容和/或它们去哪里。例如,您可以在开发中打印到屏幕或在生产中登录到 Nagios。

    【讨论】:

    • 没有 Monolog 内部的处理程序旨在捕获原生 PHP 错误。这就是我请求帮助的原因。
    • 啊,好吧,我误解了你的问题,忽略。
    【解决方案2】:

    ErrorHandler 将捕获所有级别的 trigger_error,除非您使用 @ 运算符将它们静音或通过 error_reporting(E_ALL & ~E_NOTICE); 实际设置您的错误报告

    如果出于某种原因您想保留错误报告,但同时过滤掉哪些错误被独白错误处理程序捕获,我将继续扩展错误处理程序并注册它。像这样的:

    class MyErrorHandler extends Monolog\ErrorHandler{
    
        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();
    

    请注意,我没有实际测试过这个,但我找不到它不起作用的原因

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-17
      • 2017-06-11
      • 2012-09-16
      • 1970-01-01
      • 1970-01-01
      • 2017-08-24
      • 2016-05-21
      相关资源
      最近更新 更多