Skip to content
Extraits de code Groupes Projets
Valider c12a6772 rédigé par marcimat's avatar marcimat
Parcourir les fichiers

feat: Loger les deprecated dans un fichier de log

Création d’une classe Spip\ErrorHandler pour gérer cela.
Plus tard, il faudra lui passer un logger en entrée.
parent 643c1031
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -394,6 +394,7 @@ function spip_log($message = null, $name = null) {
}
}
/**
* Enregistrement des journaux
*
......
......@@ -9,6 +9,8 @@
* Ce programme est un logiciel libre distribué sous licence GNU/GPL. *
\***************************************************************************/
use Spip\ErrorHandler;
/**
* Initialisation de SPIP
*
......@@ -484,7 +486,8 @@ if (!defined('SPIP_ERREUR_REPORT')) {
/** Masquer les warning */
define('SPIP_ERREUR_REPORT', E_ALL ^ E_NOTICE ^ E_DEPRECATED);
}
error_reporting(SPIP_ERREUR_REPORT);
ErrorHandler::setup(SPIP_ERREUR_REPORT);
// Initialisations critiques non surchargeables par les plugins
// INITIALISER LES REPERTOIRES NON PARTAGEABLES ET LES CONSTANTES
......
<?php
namespace Spip;
/**
* Gestion des erreurs PHP
* @internal
*/
final class ErrorHandler {
static bool $done = false;
public static function setup(?int $error_level = null): void {
if (!self::$done) {
self::$done = true;
error_reporting($error_level);
set_error_handler(self::class . '::user_deprecated', E_USER_DEPRECATED);
}
}
/** Loger les `trigger_deprecated()` */
public static function user_deprecated(int $errno, string $errstr, string $errfile, int $errline): bool {
if (!(\E_USER_DEPRECATED & $errno)) {
return false;
}
$backtrace = debug_backtrace();
array_shift($backtrace);
do {
$t = array_shift($backtrace);
$fqdn = $t['class'] . $t['type'] . $t['function'];
} while (in_array($fqdn, ['trigger_error', 'trigger_deprecation']));
$errfile = $t['file'];
$errline = $t['line'];
spip_log(sprintf('%s in %s on line %s', $errstr, $errfile, $errline), 'deprecated.' . _LOG_INFO);
return false;
}
}
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter