Skip to content
Advertisement

Monolog FingersCrossedHandler

I am looking into using monolog in an application I am working on but I am unsure whether I would be able to implement what I require using the FingersCrosedHandler.

I would like to only log DEBUG level messages if a message with a level of ERROR or higher is added, however I would like to see INFO messages in the log.

I have tried:

$applicationLog = new MonologLogger('App');
$streamHandler = new MonologHandlerStreamHandler(LOG_FILE, MonologLogger::DEBUG, false);
$fingersCrossedHandler = new MonologHandlerFingersCrossedHandler($streamHandler, MonologLogger::INFO, 0 , false);
$applicationLog->pushHandler($fingersCrossedHandler);
$applicationLog->addDebug('debug');
$applicationLog->addInfo('info');

But this adds both debug and info level messages to the log.

Is this possible to implement using the FingersCrossedHandler or would I need to create my own?

Advertisement

Answer

This was changed in version 1.11.0 of Monolog. There’s now an optional 6th parameter, $passThruLevel. This parameter is the minimum level log that should always be flushed. In your case, you should set up FingersCrossed in the following manner:

use MonologHandlerFingersCrossedHandler;

$fingersCrossedHandler = new FingersCrossedHandler(
    $streamHandler,
    MonologLogger::ERROR,
    0,
    true,
    true,
    MonologLogger::INFO
);

This will result in INFO or higher messages always being logged, but DEBUG messages will only show up if an ERROR level or higher message has been logged.

User contributions licensed under: CC BY-SA
6 People found this is helpful
Advertisement