From f8245696b31439b972035aa922cb8fca82a91384 Mon Sep 17 00:00:00 2001 From: Matthias Pigulla Date: Fri, 6 Dec 2019 21:51:12 +0000 Subject: [PATCH] Use strtr() instead of strtoupper() to avoid bogus results MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For examle the tr_TR locale will upper-case "i" to the "latin capital letter i with dot above" İ. --- src/Monolog/Logger.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/Monolog/Logger.php b/src/Monolog/Logger.php index 05dfc8179..e649af51b 100644 --- a/src/Monolog/Logger.php +++ b/src/Monolog/Logger.php @@ -527,8 +527,13 @@ public static function getLevelName($level) */ public static function toMonologLevel($level) { - if (is_string($level) && defined(__CLASS__.'::'.strtoupper($level))) { - return constant(__CLASS__.'::'.strtoupper($level)); + if (is_string($level)) { + // Contains chars of all log levels and avoids using strtoupper() which may have + // strange results depending on locale (for example, "i" will become "İ") + $upper = strtr($level, 'abcdefgilmnortuwy', 'ABCDEFGILMNORTUWY'); + if (defined(__CLASS__.'::'.$upper)) { + return constant(__CLASS__ . '::' . $upper); + } } return $level;