ホームページ >バックエンド開発 >PHPチュートリアル >php カスタム エラー ログに関する簡単な説明、php カスタマイズ_PHP チュートリアルに関する簡単な説明

php カスタム エラー ログに関する簡単な説明、php カスタマイズ_PHP チュートリアルに関する簡単な説明

WBOY
WBOYオリジナル
2016-07-13 10:06:36795ブラウズ

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

私は PHP エラー ログを読むことはよくありますが、自分でログを書く機会はめったにありません。Wang Jian の「Best Logging Practices」を読んだ後、明確で適切に構造化されたログを書くことが非常に必要であると感じました。

ログを書く前に、なぜカスタマイズされたログを記録する必要があるのか​​を自問します。システムのデフォルトのロギング方法を使用する代わりに?

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

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

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

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

1.php.iniを開きます

2. ログをオンにして変更します

コードをコピーします コードは次のとおりです:

log_errors = オフ

に変更されました

コードをコピーします コードは次のとおりです:

log_errors = オン

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

4. コードの先頭に次のコードを追加します

コードをコピーします コードは次のとおりです:

//エラー処理関数
関数 myErrorHandler($errno, $errstr, $errfile, $errline)
{
$log_file = "./php_%s_log_".date("Ymd").".log";//ログファイルの保存ディレクトリとファイル名を定義します
$template = '';
スイッチ ($errno) {
ケース E_USER_ERROR:
$template .= "ユーザーエラーレベルのエラー。修復する必要があります。エラー番号 [$errno] $errstr ";
$template .= "エラー場所ファイル $errfile、行 $errline n";
$log_file = sprintf($log_file,'error');
exit(1);//システム終了
休憩;
ケース E_USER_WARNING:
$template .= "ユーザー警告レベルのエラーです。エラー番号 [$errno] $errstr を修正することをお勧めします ";
$template .= "エラー場所ファイル $errfile、行 $errline n";
$log_file = sprintf($log_file,'warning');
休憩;
ケース E_USER_NOTICE:
$template .= "ユーザー通知レベルのエラー。システムには影響せず、修復する必要はありません。エラー番号 [$errno] $errstr ";
$template .= "エラー場所ファイル $errfile、行 $errline n";
$log_file = sprintf($log_file,'通知');
休憩;
デフォルト:
$template .= "不明なエラーの種類: エラー番号 [$errno] $errstr ";
$template .= "エラー場所ファイル $errfile、行 $errline n";
$log_file = sprintf($log_file,'unknown');
休憩;
}
File_put_contents($log_file,$template,FILE_APPEND);
true を返します;
}
$error_handler = set_error_handler("myErrorHandler");// カスタム エラー ログを有効にする

5. 前のコードの後に​​エラーコードを書いてみます

エコー 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 カスタム エラー ログについて新たに理解できることを願っています。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/958259.html技術記事 PHP のカスタム エラー ログについての簡単な話 私は普段 PHP のエラー ログを読みますが、自分でログを書く機会はめったにありません。Wang Jian の「Best Logging Practices」を読んだ後、自分でログを作成する必要があると感じました。一つ…
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。