当前位置: 首页 > 知识库问答 >
问题:

在Monolog ErrorHandler中设置最小PHP错误报告

屠锦
2023-03-14

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

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

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

它生成包括通知在内的所有错误。我怎么能把等价设为

错误报告(E_全部)

使用Monolog

共有2个答案

裴昕
2023-03-14

独白日志记录级别与PHP日志记录级别无关。由error\u reporting()设置的PHP日志记录级别控制PHP引擎本身在其输出中报告的内容类型。Monolog日志记录级别模拟unix系统日志级别,并由应用程序驱动,而不是由PHP驱动。例如,error\u reporting()处理PHP生成的消息,而Monolog处理应用程序生成的消息。例如,在您的应用程序中,当您发出日志时,您指示其严重性:

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

因此,您的应用程序总是在创建info级别的日志条目,由运行时配置来决定导入哪些条目和/或它们去哪里。例如,您可以在开发中打印到屏幕上,或者在生产中登录Nagios。

郑和泰
2023-03-14

ErrorHandler将捕获所有级别的trigger\u error,除非您使用@操作符使其静音,或通过error\u reporting(E\u all)实际设置错误报告

如果出于某种原因,您希望保留错误报告,但同时筛选出哪些错误被monolog错误处理程序捕获,我会选择扩展错误处理程序并注册它。像这样的东西:

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();

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

 类似资料:
  • 本文向大家介绍PHP配置文件php.ini中打开错误报告的设置方法,包括了PHP配置文件php.ini中打开错误报告的设置方法的使用技巧和注意事项,需要的朋友参考一下 打开PHP的错误报告的方法,供大家参考。 php.ini 文件中有许多配置设置。您应当已经设置好自己的 php.ini 文件并把它放在合适的目录中,就像在 Linux 上安装 PHP 和 Apache 2 的文档说明中所示的那样。

  • 问题内容: 我经常会尝试运行PHP脚本,然后返回黑屏。没有错误信息;只是一个空白的屏幕。原因可能是简单的语法错误(括号错误,分号丢失),函数调用失败或完全是其他原因。 弄清楚出了什么问题是非常困难的。我最终注释掉了代码,在各处输入“ echo”语句,等等,试图缩小问题的范围。但是肯定有更好的方法吧? 有没有办法像Java一样使PHP产生有用的错误消息? 问题答案: 对于语法错误,您需要在php.i

  • 我想从明天开始设置DatePicker对话框的最小日期。如果今天是2015年4月30日,则应从2015年5月1日开始。

  • 我有一个Rest API的测试计划,其中有一个线程组和两个采样器。同时运行负载测试 线程数(用户):80 加速期:1 我得到"响应代码: 504响应消息:GATEWAY_TIMEOUT"在jmeta. 我观察到,当聚合图中的最大值达到60000ms时,所有响应都超时。需要采取哪些措施来防止超时问题。当我使用50个或更少的用户时,负载测试工作正常。

  • 我试图在codeigniter中设置会话。当某人尝试使用电子邮件id和密码登录时。 1)使用电子邮件id查找他/她的角色。然后在会话中返回该结果并重定向到相应的链接。我在下面键入的代码。你能解决这个问题吗? 控制器 模型

  • 问题内容: 我有一个XML文档,其中包含大约48,000个子级(〜50MB)。我运行INSERT MYSQL查询,为这些子项中的每个子项都创建新条目。问题是,由于其大小,它需要很多时间。执行后,我收到这个 如何将最大执行时间设置为无限制? 谢谢 问题答案: 您可以通过在您的php代码中设置set_time_limit来实现(无限制地设置为0) 或者直接在您的php.ini中修改max_execut