ホームページ  >  記事  >  バックエンド開発  >  PHP カスタム エラー log_PHP チュートリアルに関する簡単な説明

PHP カスタム エラー log_PHP チュートリアルに関する簡単な説明

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

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 .= "ユーザーNOTICEレベルのエラー。システムには影響せず、修復する必要はありません。エラー番号[$errno] $errstr ";

$template .= "エラー場所ファイル $errfile、行 $errline n";

$log_file = sprintf($log_file,'notice');

休憩;

デフォルト:

$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がonになっている場合、上記のエラーはすべて発生します。定義したファイルにシステム エラー ログとして記録されます。

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

http://www.bkjia.com/PHPjc/958126.html

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