gpt4 book ai didi

php - Monolog - 仅记录特定级别的错误

转载 作者:行者123 更新时间:2023-12-02 07:20:40 26 4
gpt4 key购买 nike

我在 vanilla PHP 应用程序中使用 Monolog。

我只想记录特定级别的错误 - INFO 和不高于,因为我有其他处理程序。

这是我的代码:

<?php
$logger = new Logger('mylogger');
$logger->pushHandler(new StreamHandler(__DIR__.'/log/errors.log', Logger::WARNING));
$logger->pushHandler(new StreamHandler(__DIR__.'/log/info.log', Logger::INFO));

有什么方法可以只将 INFO 消息记录到 info.log 中吗?

最佳答案

我今天遇到了同样的问题,这让我来到了这里。无论如何,我通过使用 Monologs FilterHandler 解决了它.

FilterHandler 允许您将另一个处理程序作为参数传递,然后指定将触发该处理程序的最小和最大日志记录级别。

有一个few other handlers这在特定情况下很有用。

// Create the logging instance
$logger = new \Monolog\Logger('myLogger');

// Create error stream handler for error events and higher
$errorStreamHandler = new \Monolog\Handler\StreamHandler(
'Some/DirectoryPath/error.log',
\Monolog\Logger::ERROR);

// Create info stream handler for info events and higher
$infoStreamHandler = new \Monolog\Handler\StreamHandler(
'Some/DirectoryPath/Info.log',
\Monolog\Logger::INFO);

// Create filter handler to make sure info stream only logs info events
// Pass in the info handler
// Debug is the minimum level this handler will handle
// Info is the maximum level this handler will handle
$infoFilterHandler = new \Monolog\Handler\FilterHandler(
$infoStreamHandler,
\Monolog\Logger::DEBUG,
\Monolog\Logger::INFO);

// Add the handlers to logger
$logger->pushHandler($errorStreamHandler);
$logger->pushHandler($infoFilterHandler);

// Yay no errors in Info.log
$logger->addError("Some Error");
$logger->addInfo("Some Info");

更新阿里引用source code\Monolog\Logger 查找哪些常量可用,然后将常量分配给变量。

$someVar = \Monolog\Logger::INFO;

$infoStreamHandler = new \Monolog\Handler\StreamHandler(
'Some/DirectoryPath/Info.log',
$someVar);

关于php - Monolog - 仅记录特定级别的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47091476/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com