Php 独白指法
我正在研究在我正在开发的一个应用程序中使用monolog,但我不确定是否能够使用FingersCrosedHandler实现我所需要的功能 如果添加了错误级别或更高级别的消息,我只希望记录调试级别的消息,但是我希望在日志中看到信息消息 我试过:Php 独白指法,php,monolog,Php,Monolog,我正在研究在我正在开发的一个应用程序中使用monolog,但我不确定是否能够使用FingersCrosedHandler实现我所需要的功能 如果添加了错误级别或更高级别的消息,我只希望记录调试级别的消息,但是我希望在日志中看到信息消息 我试过: $applicationLog = new Monolog\Logger('App'); $streamHandler = new Monolog\Handler\StreamHandler(LOG_FILE, Monolog\Logger::DEBUG
$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');
但这会将调试和信息级别的消息添加到日志中
这是可以使用FingerScrossHandler实现的,还是我需要创建自己的?这在FingerScrossHandler中是不可能的。您可以轻松地扩展它并重写handle(),这样它就只缓冲调试消息,而让其余的消息始终通过。问题是,如果您这样做,当出现错误时,您将使消息无序,除非您缓冲所有消息,并且在最后,如果没有发生错误,则刷新所有消息,但调试除外。这在Monolog的版本
1.11.0
中更改。现在有一个可选的第6个参数,$passThruLevel
。此参数是应始终刷新的最低级别日志。在您的情况下,应按以下方式设置FingerScross:
use Monolog\Handler\FingersCrossedHandler;
$fingersCrossedHandler = new FingersCrossedHandler(
$streamHandler,
Monolog\Logger::ERROR,
0,
true,
true,
Monolog\Logger::INFO
);
这将导致始终记录
INFO
或更高级别的消息,但是DEBUG
消息仅在记录了错误级别或更高级别的消息时才会显示。好的,请查看BufferHandler,了解如何在进程结束时自动刷新。