ホームページ  >  記事  >  バックエンド開発  >  php error_log() 関数の使用法について

php error_log() 関数の使用法について

怪我咯
怪我咯オリジナル
2017-07-10 14:28:451577ブラウズ

error_log() 関数は、エラー メッセージをサーバー エラー ログ、ファイル、またはリモート ターゲットに送信します。構文

error_log(message,type,destination,headers);
パラメータ 説明
メッセージ が必要です。ログに記録するエラー メッセージを指定します。
タイプ

はオプションです。エラーを送信する場所を指定します。可能な値:

  • 0 - デフォルト。メッセージは、php.ini の error_log ディレクティブに応じて、オペレーティング システムのロギング メカニズムまたはファイルを使用して、PHP のシステム ログに送信されます。

  • 1 - メッセージはパラメーター destination で設定された電子メール アドレスに送信されます。 4 番目のパラメーター extra_headers は、このタイプでのみ使用されます。

  • 2 - 非推奨 (PHP 3 でのみ使用)

  • 3 - メッセージは 宛先 のファイルに送信されます。文字 message は、デフォルトでは改行として扱われません。

  • 4 - メッセージは SAPI ログ ハンドラーに直接送信されます。

目的地 オプション。エラーメッセージの送信先を指定します。この値は、type パラメータの値によって決まります。
ヘッダー

はオプションです。 From、Cc、Bcc などの追加ヘッダーを指定します。このメッセージ タイプは、mail() と同じ組み込み関数を使用します。

message_typeが 1 に設定されている場合にのみ使用されます。

CRLF (rn) は、複数のヘッダーを区切るために使用する必要があります。

実際、私たちにとって、簡単にするために、ログにはタイプ 3 を直接使用し、必要なファイルにログ ファイルを書き込む方が一般的により適切です。

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

function logError($object)
{
 if(DB::isError($object))
 {
  error_log(date("[Y-m-d H:i:s]")." -[".$_SERVER['REQUEST_URI']."] :".$object -> userinfo."\n", 3, "/tmp/php_sql_err.log");
  return true;
 }
 return false;
}

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

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

function getNewsContent($news_id, $field="")
{
 global $db;
 $result = $db->getRow("SELECT $field FROM news WHERE news_id = '$news_id'");
 if (logError($result))
 {
  return false;
 }
 return $result;
}

SQL が間違っているかどうかを判断し、間違っている場合は戻ります。 false の場合、ログをチェックして、関数が期待どおりに実行されるかどうかを確認できます。
以下を実行します: 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 が正しく記述されているかどうか、またはパラメーターが正しく渡されていないかどうかをチェックするのに役立ちます。これにより、開発の負担が大幅に軽減され、プログラムの

単体テスト を実行できるようになります。

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


今回の作業で簡単なログを記録するために使用しました


<code>
            $address    = post(&#39;address&#39;);
            $group_add  = explode(&#39;,&#39;,$address);

            $url   ="/usr/local/apache/eyoung/tmp/maillog_".date("Y-m-d").".log";

            foreach($group_add as $value)
            {
                    /** {{{ modify by muzhaoyang -2006.12.13- 记log
                      *  已空格分隔数据,记录的数据为写文本时间 拉票人ID 选手ID 发信地址
                      */
                      $logstr=date("H:i:s")." ".$uid." ".$star_uid." ".$value."\n";
                      error_log($logstr,3,$url);
                    //}}}
             }

</code>


以上がphp error_log() 関数の使用法についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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