ホームページ  >  記事  >  バックエンド開発  >  PHPカスタムエラーログに関する簡単な説明

PHPカスタムエラーログに関する簡単な説明

高洛峰
高洛峰オリジナル
2016-12-23 15:41:431208ブラウズ

理由は 2 つあると思います:

1. 管理を容易にするために、チームはログの統一された形式を必要としています

2. 大量の役に立たないエラー ログがハードディスクのスペースを占有しており、意味のあるログのみを記録する必要があります。

それでは、実践してみましょう。

1. php.ini を開きます

2. ログをオンにして、

log_errors = Off

log_errors = On

に変更します。 3. php.ini を保存し、Web サーバーを終了して再起動します

4. コードの先頭に追加します。次のコードは次のとおりです

<?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. 今のコードの後に​​エラー コードを書いてみてください

echo 1/0;

定義したパスの下に余分なログ ファイルがあるかどうか確認してください。 :)

注: 次のレベルのエラーは、ユーザー定義関数では処理できません: E_ERROR、E_PARSE、E_CORE_ERROR、E_CORE_WARNING、E_COMPILE_ERROR、E_COMPILE_WARNING、および set_error_handler() 関数が呼び出されるファイル内で生成されるほとんどの E_STRICT。

ただし、エラーログシステムを有効にし (php.ini で log_error = on)、システムログファイルを指定し (php.ini で error_log = パス名も)、error_reporting がオンになっている場合、上記のエラーが発生します。これらはすべて、システム エラー ログとして定義したファイルに記録されます。

以上がこの記事で説明した内容です。皆さんが PHP カスタム エラー ログについて新たに理解できることを願っています。

PHP カスタム エラー ログに関するその他の記事については、PHP 中国語 Web サイトに注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。