Take an example from the Monolog documentation:

?php use Monolog\Logger; use Monolog\Handler\StreamHandler; // create a log channel $log = new Logger('name'); $log->pushHandler(new StreamHandler('path/to/your.log', Logger::WARNING)); // add records to the log $log->warning('Foo'); $log->error('Bar'); 

Question: how to set the logging level ( WARNING in Logger::WARNING ) from a variable (for example, $log_level='WARNING' )?

    1 answer 1

    Logger:WARNING just a constant. The constant can be saved to a variable and used later.

     $log_level = Logger::WARNING // create a log channel $log = new Logger('name'); $log->pushHandler(new StreamHandler('path/to/your.log', $log_level)); 

    If you need it from the string, then the easiest way to use the dictionary.

     $log_level = 'warning'; $possible_levels = ['debug' => Logger::DEBUG, 'info' => Logger::INFO, 'warning' => Logger::WARNING, /*other levels */]; $level = $possible_levels[ $log_level ]; $log = new Logger( 'name' ); $log->pushHandler( new StreamHandler( 'path/to/your.log', $level ) ); 

    If you don’t want to start a dictionary or want to avoid duplication of levels, you can use reflection.

     $log_level = 'WARNING'; $LoggerRef = new \ReflectionClass( 'Monolog\Logger' ); $level = $LoggerRef->getConstant( $log_level ); $log = new Logger( 'name' ); $log->pushHandler( new StreamHandler( 'path/to/your.log', $level )