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.