首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Monolog FingersCrossedHandler

Monolog FingersCrossedHandler
EN

Stack Overflow用户
提问于 2012-11-20 23:05:52
回答 2查看 4.1K关注 0票数 7

我正在考虑在我正在开发的应用程序中使用monolog,但是我不确定我是否能够使用FingersCrosedHandler实现我所需要的东西。

如果添加了错误级别或更高级别的消息,我想只记录调试级别的消息,但我希望在日志中看到INFO消息。

我试过了:

代码语言:javascript
复制
$applicationLog = new Monolog\Logger('App');
$streamHandler = new Monolog\Handler\StreamHandler(LOG_FILE, Monolog\Logger::DEBUG, false);
$fingersCrossedHandler = new Monolog\Handler\FingersCrossedHandler($streamHandler, Monolog\Logger::INFO, 0 , false);
$applicationLog->pushHandler($fingersCrossedHandler);
$applicationLog->addDebug('debug');
$applicationLog->addInfo('info');

但是这会将调试和信息级别的消息添加到日志中。

这可以使用FingersCrossedHandler实现吗?或者我需要创建我自己的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-10 14:36:08

这在Monolog的1.11.0版本中进行了更改。现在有一个可选的第六个参数,$passThruLevel。此参数是应始终刷新的最低级别日志。在您的情况下,应按以下方式设置FingersCrossed:

代码语言:javascript
复制
use Monolog\Handler\FingersCrossedHandler;

$fingersCrossedHandler = new FingersCrossedHandler(
    $streamHandler,
    Monolog\Logger::ERROR,
    0,
    true,
    true,
    Monolog\Logger::INFO
);

这将导致始终记录INFO或更高级别的消息,但只有在记录了ERROR级别或更高级别的消息时,才会显示DEBUG消息。

票数 6
EN

Stack Overflow用户

发布于 2012-11-21 03:28:25

这对于FingersCrossedHandler本身来说是不可能的。不过,您可以轻松地扩展它并覆盖handle(),以便它只缓冲调试消息,并始终让其余消息通过。问题是,如果这样做,除非缓冲所有内容,否则在发生错误时会有乱序的消息,最后如果没有发生错误,则会刷新除debug之外的所有内容。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13476038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档