我尝试了很多。
$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条)时,日志根本不会变得松弛。 >
答案 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
之后再出现)。
这样,首先调用它来处理记录,然后再调用其他记录。