diff --git a/src/Monolog/Logger.php b/src/Monolog/Logger.php index a8e97870e..9242f6ee9 100644 --- a/src/Monolog/Logger.php +++ b/src/Monolog/Logger.php @@ -408,8 +408,11 @@ public static function getLevelName(int $level): string public static function toMonologLevel($level): int { if (is_string($level)) { - if (defined(__CLASS__.'::'.strtoupper($level))) { - return constant(__CLASS__.'::'.strtoupper($level)); + // Contains chars of all log levels and avoids using strtoupper() which may have + // strange results depending on locale (for example, "i" will become "İ" in Turkish locale) + $upper = strtr($level, 'abcdefgilmnortuwy', 'ABCDEFGILMNORTUWY'); + if (defined(__CLASS__.'::'.$upper)) { + return constant(__CLASS__ . '::' . $upper); } throw new InvalidArgumentException('Level "'.$level.'" is not defined, use one of: '.implode(', ', array_keys(static::$levels)));