Maison  >  Article  >  développement back-end  >  Une brève discussion sur le journal des erreurs personnalisé php

Une brève discussion sur le journal des erreurs personnalisé php

高洛峰
高洛峰original
2016-12-23 15:41:431208parcourir

Je pense qu'il y a deux raisons :

1. L'équipe a besoin d'un format de journaux unifié pour une gestion facile

2. Un grand nombre de journaux d'erreurs inutiles occupent uniquement de l'espace sur le disque dur. des journaux significatifs doivent être enregistrés.

Ensuite, pratiquez-le.

1. Ouvrez votre php.ini

2. Activez la journalisation et remplacez

log_errors = Off

par

log_errors = On

3. Modifiez Enregistrer le php. .ini, quittez et redémarrez le serveur Web

4. Ajoutez le code suivant au début de votre code

<?php
//错误处理函数
function myErrorHandler($errno, $errstr, $errfile, $errline)
{
    $log_file = "./php_%s_log_".date("Ymd").".log";//定义日志文件存放目录和文件名
    $template = &#39;&#39;;
    switch ($errno) {
    case E_USER_ERROR:
        $template .= "用户ERROR级错误,必须修复 错误编号[$errno] $errstr ";
        $template .= "错误位置 文件$errfile,第 $errline 行\n";
        $log_file = sprintf($log_file,&#39;error&#39;);
        exit(1);//系统退出
        break;
    case E_USER_WARNING:
        $template .= "用户WARNING级错误,建议修复 错误编号[$errno] $errstr ";
        $template .= "错误位置 文件$errfile,第 $errline 行\n";
        $log_file = sprintf($log_file,&#39;warning&#39;);
        break;
    case E_USER_NOTICE:
        $template .= "用户NOTICE级错误,不影响系统,可不修复 错误编号[$errno] $errstr ";
        $template .= "错误位置 文件$errfile,第 $errline 行\n";
    $log_file = sprintf($log_file,&#39;notice&#39;);
        break;
    default:
        $template .= "未知错误类型: 错误编号[$errno] $errstr  ";
        $template .= "错误位置 文件$errfile,第 $errline 行\n";
        $log_file = sprintf($log_file,&#39;unknown&#39;);
        break;
    }
    file_put_contents($log_file,$template,FILE_APPEND);
    return true;
}
$error_handler = set_error_handler("myErrorHandler");//开启自定义错误日志

5. Essayez d'écrire un code d'erreur après le code tout à l'heure

. 🎜>

echo 1/0;

Voir s'il y a un fichier journal supplémentaire sous le chemin que vous avez défini ? :)

Remarque : Les niveaux d'erreurs suivants ne peuvent pas être gérés par les fonctions définies par l'utilisateur : E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING et la plupart des E_STRICT générés dans le fichier où se trouve la fonction set_error_handler(). appelé. .

Mais lorsque vous activez le système de journalisation des erreurs (log_error = on dans php.ini) et spécifiez le fichier journal du système (également error_log=path name dans php.ini), et que error_reporting est activé, tout ce qui précède les erreurs seront enregistrées dans le fichier que vous définissez comme journal des erreurs système.

Ce qui précède correspond à tout le contenu décrit dans cet article. J'espère que vous pourrez avoir une nouvelle compréhension des journaux d'erreurs personnalisés PHP.

Pour plus d'articles sur les journaux d'erreurs personnalisés PHP, veuillez faire attention au site Web PHP chinois !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn