From 6062aa1f9587957c8f28cb766263fd0ef53bb1b0 Mon Sep 17 00:00:00 2001
From: Matthieu Marcillaud <marcimat@rezo.net>
Date: Tue, 9 Jan 2024 12:33:41 +0100
Subject: [PATCH] =?UTF-8?q?fix:=20Notice,=20est=20le=20niveau=20de=20log?=
 =?UTF-8?q?=20mini=20par=20d=C3=A9faut,=20pas=20Info.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Par ailleurs, la constante `_LOG_FILTRE_GRAVITE` qui reste pour le moment
reçoit une valeur `Psr\Log\LogLevel::*` plutôt qu’une constante SPIP dépréciée.

On accepte aussi que ça soit un enum `Monolog\Level` également
---
 ecrire/bootstrap/config/globals.php |  2 --
 ecrire/bootstrap/inc/logging.php    | 25 ++++++++++++++++++++++++-
 ecrire/inc_version.php              |  8 ++++++--
 3 files changed, 30 insertions(+), 5 deletions(-)

diff --git a/ecrire/bootstrap/config/globals.php b/ecrire/bootstrap/config/globals.php
index 56ba04f379..f21055ff8b 100644
--- a/ecrire/bootstrap/config/globals.php
+++ b/ecrire/bootstrap/config/globals.php
@@ -67,8 +67,6 @@ global
 $nombre_de_logs = 4;
 $taille_des_logs = 100;
 
-// on peut definir _LOG_FILTRE_GRAVITE dans mes_options.php
-
 // Prefixe des tables dans la base de donnees
 // (a modifier pour avoir plusieurs sites SPIP dans une seule base)
 $table_prefix = 'spip';
diff --git a/ecrire/bootstrap/inc/logging.php b/ecrire/bootstrap/inc/logging.php
index 93ebeaf87f..f50b1f616d 100644
--- a/ecrire/bootstrap/inc/logging.php
+++ b/ecrire/bootstrap/inc/logging.php
@@ -2,6 +2,7 @@
 
 use Monolog\Level;
 use Psr\Log\LoggerInterface;
+use Psr\Log\LogLevel;
 use Spip\Component\Filesystem\Filesystem;
 use Spip\Component\Logger\Config;
 use Spip\Component\Logger\Factory;
@@ -54,7 +55,29 @@ function spip_logger(?string $name = null): LoggerInterface {
 			// échappement des log
 			'brut' => defined('_LOG_BRUT') ? constant('_LOG_BRUT') : null,
 			// à quel level on commence à logguer
-			'max_level' => defined('_LOG_FILTRE_GRAVITE') ? $spipToMonologLevels[constant('_LOG_FILTRE_GRAVITE')] ?? Level::Info : Level::Info,
+			'max_level' => (function() use ($spipToMonologLevels): Level {
+				if (!defined('_LOG_FILTRE_GRAVITE')) {
+					return Level::Notice;
+				}
+				$level = constant('_LOG_FILTRE_GRAVITE');
+				if ($level instanceof Level) {
+					return $level;
+				}
+				if (isset($spipToMonologLevels[$level])) {
+					return $spipToMonologLevels[$level];
+				}
+				return match($level) {
+					LogLevel::EMERGENCY => Level::Emergency,
+					LogLevel::ALERT => Level::Alert,
+					LogLevel::CRITICAL => Level::Critical,
+					LogLevel::CRITICAL => Level::Error,
+					LogLevel::CRITICAL => Level::Warning,
+					LogLevel::CRITICAL => Level::Notice,
+					LogLevel::CRITICAL => Level::Info,
+					LogLevel::CRITICAL => Level::Debug,
+					default => Level::Notice,
+				};
+			})(),
 			// rotation: nombre de fichiers
 			'max_files' => $GLOBALS['nombre_de_logs'] ??= 4,
 			// rotation: taille max d’un fichier
diff --git a/ecrire/inc_version.php b/ecrire/inc_version.php
index 6c6146c521..0e2443a923 100644
--- a/ecrire/inc_version.php
+++ b/ecrire/inc_version.php
@@ -9,6 +9,7 @@
  *  Ce programme est un logiciel libre distribué sous licence GNU/GPL.     *
 \***************************************************************************/
 
+use Psr\Log\LogLevel;
 use Spip\ErrorHandler;
 
 /**
@@ -120,8 +121,11 @@ if (@is_readable(_CACHE_PLUGINS_OPT) && @is_readable(_CACHE_PLUGINS_PATH)) {
 spip_initialisation_suite();
 
 if (!defined('_LOG_FILTRE_GRAVITE')) {
-	/** niveau maxi d'enregistrement des logs */
-	define('_LOG_FILTRE_GRAVITE', _LOG_INFO_IMPORTANTE);
+	/**
+	 * Niveau maxi d'enregistrement des logs
+	 * @var LogLevel::*
+	*/
+	define('_LOG_FILTRE_GRAVITE', LogLevel::NOTICE);
 }
 
 if (!defined('_OUTILS_DEVELOPPEURS')) {
-- 
GitLab