The class name inside a string like in the argument to the constant()
function must be fully qualified. When you do Logger::DEBUG it works because the class is use'd
, so it resolves as Monolog\Logger::DEBUG
but in the string it just remains Logger::DEBUG
and that obviously does not exist.
Therefore the solution is simply to use the fully qualified name within strings, i.e.
$level = constant('Monolog\Logger::'.strtoupper($level));