developer's diary

最近はc#のエントリが多いです

phpで簡易ログ出力

単純にログを出力する場合はerror_logを使う。

若干詳細にログをとる場合はこんな感じに関数を定義する

<?php
function access_logger($str){
  $datetime = date( "Y/m/d (D) H:i:s", time() );//日時
  $client_ip = $_SERVER["REMOTE_ADDR"];//クライアントのIP
  $request_url = $_SERVER["REQUEST_URI"];//アクセスしたURL
  $msg = "[{$datetime}][logger][client {$client_ip}][url {$request_url}]{$str}";
  error_log($msg."\n", 3, "/var/log/php/access.log");
}

改造の余地(思いついたことや調べてたこと)をメモ

エラーレベル 内容
E_ERROR 重大な実行時エラー。これは、メモリ確保に関する問題のように復帰できないエラーを示します。スクリプトの実行は中断されます。
E_WARNING 実行時の警告(致命的なエラーではない)。スクリプトの実行は中断されません。
E_PARSE コンパイル時のパースエラー。パースエラーはパーサでのみ生成されます。
E_NOTICE 実行時の警告。エラーを発しうる状況に遭遇したことを示す。ただし通常のスクリプト実行の場合にもこの警告を発することがありうる。
E_CORE_ERROR PHPの初期始動時点での致命的なエラー。E_ERRORに似ているがPHPのコアによって発行される点が違う。
E_CORE_WARNING (致命的ではない)警告。PHPの初期始動時に発生する。E_WARNINGに似ているがPHPのコアによって発行される点が違う。
E_COMPILE_ERROR コンパイル時の致命的なエラー。E_ERRORに似ているがZendスクリプティングエンジンによって発行される点が違う。
E_COMPILE_WARNING コンパイル時の警告(致命的ではない)。E_WARNINGに似ているがZendスクリプティングエンジンによって発行される点が違う。
E_USER_ERROR ユーザーによって発行されるエラーメッセージ。E_ERRORに似ているがPHPコード上でtrigger_error()関数を使用した場合に発行される点が違う。
E_USER_WARNING ユーザーによって発行される警告メッセージ。E_WARNINGに似ているがPHPコード上でtrigger_error()関数を使用した場合に発行される点が違う。
E_USER_NOTICE ユーザーによって発行される注意メッセージ。E_NOTICEにに似ているがPHPコード上でtrigger_error()関数を使用した場合に発行される点が違う。
E_STRICT コードの相互運用性や互換性を維持するためにPHPがコードの変更を提案する。
E_RECOVERABLE_ERROR キャッチできる致命的なエラー。危険なエラーが発生したが、エンジンが不安定な状態になるほどではないことを表す。ユーザ定義のハンドラでエラーがキャッチされなかった場合(set_error_handler()も参照ください)は、E_ERRORとして異常終了する。
E_DEPRECATED 実行時の注意。これを有効にすると、将来のバージョンで動作しなくなるコードについての警告を受け取ることができる。
E_USER_DEPRECATED ユーザ定義の警告メッセージ。これはE_DEPRECATEDと同等だが、PHPのコード上で関数trigger_error()によって作成されるという点が異なる。
エラーレベル 内容
FATAL プログラムをクラッシュさせるような制御不可能なエラー
ERROR エラー
WARN 警告
INFO 一般的な情報
DEBUG 低レベルの情報
  • 改行を含むログの場合は配列に変換してからインデントを整えて出力
  • $_GETや$_POSTや$_SERVERのログも取る