monolog slackhandler和基本文件处理程序不能一起使用

时间:2018-12-24 16:06:23

标签: php laravel monolog

我尝试了很多。

 $monolog = Log::getLogger();

        $slackHandler = new \Monolog\Handler\SlackHandler(env("LOG_SLACK_WEBHOOK_URL"), 'translive', null, true, null, \Monolog\Logger::INFO, true, false ,false);
        $monolog->pushHandler($slackHandler);

        $dailyHandlerInfo = new \Monolog\Handler\RotatingFileHandler(storage_path("logs/daily/info/info.log"), 0, \Monolog\Logger::INFO, false, 0664);
        $monolog->pushHandler($dailyHandlerInfo);



        $dailyHandlerError = new \Monolog\Handler\RotatingFileHandler(storage_path("logs/daily/error/error.log"), 0, \Monolog\Logger::ERROR, false, 0664);
        $monolog->pushHandler($dailyHandlerError);

        $dailyHandlerCritical = new \Monolog\Handler\RotatingFileHandler(storage_path("logs/daily/critical/critical.log"), 0, \Monolog\Logger::CRITICAL, false, 0664);
        $monolog->pushHandler($dailyHandlerCritical);

这是我在laravel提供程序的register方法中所拥有的。

错误是:如果我仅使用slackHandler,它将起作用并将日志发送到slack。如果您如您所见使用RotatingFIleHandler 3次(信息,错误,严重有不同的路径),它们可以工作,但是问题是当我这样写(其中4条)时,日志根本不会变得松弛。 >

1 个答案:

答案 0 :(得分:0)

初始化$bubble时传递的RotatingFileHandler参数设置为false

这意味着当它处理记录时,将不再传播它们。 [1]

如果您希望将RotatingFileHandler中处理的记录传播到下一个日志处理程序,请将$bubble设置为true

$dailyHandlerInfo = new \Monolog\Handler\RotatingFileHandler(
    storage_path("logs/daily/info/info.log"), 0, \Monolog\Logger::INFO, true, 0664);
$monolog->pushHandler($dailyHandlerInfo);

更新

关于您对$bubble中将false设置为RotatingFileHandler的意图的评论。

您仍可以继续保持处理程序之间的分隔,并通过小心处理程序的注册顺序,使它们登录到具有不同严重性的消息以分隔文件。

注册SlackHandler和栈顶(,使其在注册RotatingFileHandler之后再出现)。

这样,首先调用它来处理记录,然后再调用其他记录。