PHP error_log() 関数によるエラー ログの処理_PHP チュートリアル

WBOY
リリース: 2016-07-15 13:32:55
オリジナル
930 人が閲覧しました

PHP の error_log() 関数は、主にエラー ログを書き込むために使用されます。これを使用して、複数人による開発、または単体テストでのエラーを含まないより複雑な開発プロジェクトでプログラムを記録できます。データベースクエリステートメントの実行。

PHP error_log() 関数の概要を見てみましょう。マニュアルの説明を見てみましょう:

error_log

(PHP 3, PHP 4, PHP 5)


bool error_log ( string message [, int message_type [, string destination [, string extra_headers]]] )

エラー メッセージを Web サーバーのエラー ログ、TCP ポート、またはファイルに送信します。

PHP error_log() 関数のパラメーターを見てみましょう。最初のパラメーター message はメッセージの内容、2 番目のパラメーターの種類はメッセージの種類、3 番目のパラメーターはターゲット ファイル、4 番目のパラメーターはその他のヘッダー情報です。実際、4 番目のパラメータは通常は使用されません。主に最初の 3 つのパラメータに注目します。2 番目のパラメータは、0、1、2、3 の 4 つのタイプを含みます。0 がデフォルトのタイプです。 4 種類の関数:

0

メッセージの内容は、php.ini の error_log 設定オプションの内容に応じて、オペレーティング システム独自のログ メカニズムまたはファイルを使用して、PHP のシステム ログに送信されます。これはデフォルトのオプションです。


1

3 番目のパラメータは電子メールを送信するためのヘッダー情報です。2 番目のタイプは、メールを送信するために mail() 関数を使用します。メッセージは、PHP デバッグ サーバーを介してリモートで PHP デバッグ サーバーに書き込まれます。また、PHP のコンパイル時に --enable-debugger がオンになっている必要があります。また、型全体は PHP 3


3

Message に対してのみ有効です。新しい行がオブジェクト ファイルに追加されます。実際、私たちにとっては、簡単にするために、ログ記録にはタイプ 3 を直接使用し、必要なファイルにログ ファイルを書き込む方が一般的により適切です。


PHP error_log() 関数の簡単な使用法を説明するために、例を見てみましょう。データベース抽象クラスが PEAR::DB クラスを使用しているとします。次に、プログラムに実行エラーがあるかどうかを記録したいと思います。次に、error_log() を使用して SQL ステートメントの実行エラーまたは失敗を記録します。少なくとも PEAR::DB クラスには、実行結果オブジェクトにエラーがあるかどうかを取得する DB::isError() メソッドが用意されています。特定の SQL ステートメントの実行中にエラーが発生したかどうかを判断し、同時に、オブジェクトに誤った SQL ステートメントを記録する userinfo 属性があれば、次のような関数を構築できます。

<ol class="dp-xml">
<li class="alt"><span><span>function logError($object)   </span></span></li>
<li><span>{  </span></li>
<li class="alt"><span>if(DB::isError($object))   </span></li>
<li><span>{  </span></li>
<li class="alt">
<span>error_log(date("[Y-m-d H:i:s]")<br>." -[".$_SERVER['REQUEST_URI'].<br>"] :".$object -</span><span class="tag">></span><span> userinfo."n", <br>3, "/tmp/php_sql_err.log");  </span>
</li>
<li><span>return true;  </span></li>
<li class="alt"><span>}  </span></li>
<li><span>return false;  </span></li>
<li class="alt"><span>} </span></li>
</ol>
ログイン後にコピー

PHP error_log( ) 関数は、間違った SQL が見つかった場所を記録し、時刻、現在のページ、間違った SQL ステートメントの情報を /tmp/php_sql_err.log ファイルに自動的に記録します。プログラムをデバッグすると、データが見つかります。抽出が正しくない場合、またはデータ抽出がない場合は、/tmp/php_sql_err.log ファイルを表示して、エラー ページと間違った SQL ステートメントを確認できます。

もちろん、SQL クエリを実行するプログラムでこの関数を使用する必要があります。たとえば、ニュース情報を抽出する関数を作成する場合:

<ol class="dp-xml">
<li class="alt"><span><span>function getNewsContent($news_id, $</span><span class="attribute">field</span><span>=</span><span class="attribute-value">""</span><span>)  </span></span></li>
<li><span>{  </span></li>
<li class="alt"><span>global $db;  </span></li>
<li>
<span>$</span><span class="attribute">result</span><span> = $db-</span><span class="tag">></span><span>getRow("SELECT <br>$field FROM news WHERE </span><span class="attribute">news_id</span><span> = </span><span class="attribute-value">'$news_id'</span><span>");  </span>
</li>
<li class="alt"><span>if (logError($result))  </span></li>
<li><span>{  </span></li>
<li class="alt"><span>return false;  </span></li>
<li><span>}  </span></li>
<li class="alt"><span>return $result;  </span></li>
<li><span>} </span></li>
</ol>
ログイン後にコピー

SQL が間違っているかどうかを判断し、間違っている場合は false を返します。間違っている場合は、ログをチェックして、PHP error_log() 関数が期待どおりに実行されるかどうかを確認できます。

tail /tmp/php_sql_err.log を実行すると、次のような情報が表示されます:

[2006-01-12 11:44:34] -[/news_list.php?news_id=1] :SELECT FROM news WHERE news_id = '1' [nativecode=1064 ** SQL 構文にエラーがあります。'FROM news WHERE news_id = '1' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。 ]

これはおそらく、選択したときに、抽出する必要があるフィールド名を記述しなかったため、news_list.php ファイルを確認すると、getNewsContent() 関数が $field パラメーターを渡していないことがわかります。となり、SQL 実行エラーが発生します。したがって、error_log() 関数は、SQL が正しく記述されているかどうか、またはパラメーターが正しく渡されていないかどうかをチェックするのに役立ちます。これにより、開発の負担が大幅に軽減され、プログラムの単体テストが可能になります。

もちろん、PHP error_log() 関数を使用して、より多くのエラー ログを記録して、PHP 開発を容易にすることもできます。


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

www.bkjia.com
tru​​e

http://www.bkjia.com/PHPjc/446109.html技術記事 PHP error_log() 関数は、主にエラー ログを書き込むために使用されます。複数人による開発や、単体テストを行わないより複雑な開発プロジェクトで使用できます。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート