Maison >développement back-end >tutoriel php >Explication détaillée des exemples de journaux d'erreurs personnalisés PHP
journal des erreurs personnalisé php
Dans le projet, le journal des erreurs défini doit être traité en temps opportun, vous devez donc modifier la méthode de sortie du journal des erreurs personnalisé ( écrire des journaux, envoyer des e-mails, envoyer des messages texte)
1. register_shutdown_function(array('phperror','shutdown_function')); //Définir la fonction à exécuter après l'exécution du programme PHP
La fonction peut être implémentée lorsqu'une fonction qui est exécutée une fois l'exécution du programme terminée, et sa fonction est d'implémenter les opérations suivantes une fois l'exécution du programme terminée. Il peut y avoir un délai d'attente d'exécution ou un arrêt forcé lorsque le programme est en cours d'exécution, mais l'invite par défaut dans ce cas est très peu conviviale. Si vous utilisez la fonction register_shutdown_function() pour intercepter les exceptions, vous pouvez fournir une méthode d'affichage des erreurs plus conviviale. Dans le même temps, des opérations de suivi de certaines fonctions peuvent être mises en œuvre, telles que le nettoyage temporaire des données après la fin de l'exécution, y compris les fichiers temporaires, etc.
Vous pouvez comprendre les conditions d'appel comme ceci :
1. Lorsque la page est forcée de s'arrêter par l'utilisateur
2. Lorsque le code du programme expire
3. Lorsque l'exécution du code PHP est terminée, il y a des exceptions, des erreurs et des avertissements dans l'exécution du code
2. set_error_handler(array('phperror','error_handler')) ; // Définir une fonction de gestion des erreurs définie par l'utilisateur
Définir le gestionnaire d'erreurs défini par l'utilisateur via la fonction set_error_handler(), puis déclencher l'erreur (via trigger_error()) :
3. set_exception_handler(array('phperror' ,'appException')); //Gestion personnalisée des exceptions
Définissez le format de données du lancement d'exception.
class phperror{ //自定义错误输出方法 public static function error_handler($errno, $errstr, $errfile, $errline){ $errtype = self::parse_errortype($errno); $ip = $_SERVER['REMOTE_ADDR'];//这里简单的获取客户端IP //错误提示格式自定义 $msg = date('Y-m-d H:i:s')." [$ip] [$errno] [-] [$errtype] [application] {$errstr} in {$errfile}:{$errline}"; //自定义日志文件的路径 $logPath = 'logs/app.log'; //写操作,注意文件大小等控制 file_put_contents($logPath, $msg, FILE_APPEND); } //系统运行中的错误输出方法 public static function shutdown_function(){ $lasterror = error_get_last();//shutdown只能抓到最后的错误,trace无法获取 $errtype = self::parse_errortype($lasterror['type']); $ip = $_SERVER['REMOTE_ADDR'];//这里简单的获取客户端IP //错误提示格式自定义 $msg = date('Y-m-d H:i:s')." [$ip] [{$lasterror['type']}] [-] [$errtype] [application] {$lasterror['message']} in {$file}:{$lasterror['line']}"; //自定义日志文件的路径 $logPath = 'logs/app.log'; //写操作,注意文件大小等控制 file_put_contents($logPath, $msg,FILE_APPEND); } //自定义异常输出 public static function appException($exception) { echo " exception: " , $exception->getMessage(), "/n"; } private static function parse_errortype($type){ switch($type){ case E_ERROR: // 1 return 'Fatal Error'; case E_WARNING: // 2 return 'Warning'; case E_PARSE: // 4 return 'Parse error'; case E_NOTICE: // 8 return 'Notice'; case E_CORE_ERROR: // 16 return 'Core error'; case E_CORE_WARNING: // 32 return 'Core warning'; case E_COMPILE_ERROR: // 64 return 'Compile error'; case E_COMPILE_WARNING: // 128 return 'Compile warning'; case E_USER_ERROR: // 256 return 'User error'; case E_USER_WARNING: // 512 return 'User warning'; case E_USER_NOTICE: // 1024 return 'User notice'; case E_STRICT: // 2048 // return 'Strict Notice'; case E_RECOVERABLE_ERROR: // 4096 return 'Recoverable Error'; case E_DEPRECATED: // 8192 return 'Deprecated'; case E_USER_DEPRECATED: // 16384 return 'User deprecated'; } return $type; } }
Ce qui précède est l'explication détaillée des exemples de journaux d'erreurs personnalisés php. Pour plus de contenu connexe, veuillez prêter attention au site Web PHP chinois. (www.php.cn) !