[Utility.php] ログを残すwriteLog()

Utility.phpに記述しておきたいfunctionを掲載していきます。
記事中【 C_ 】 で始まるコードは定数です。server_dependence.phpを参照してください。

ログを残すwriteLog()

PHPのログ管理には、PEARの【PEAR::Log】があります。
企業で開発しているのなら、機能満載のPEARを利用したほうが良いかもしれません。
ただ、開発も運用も1人で行う個人開発の方なら、少々オーバースペックな気がしないでもありません。

以下のwriteLog()は、必要最小限のログ出力を行います。
またログの重要性を気にしない前提で、ファイルロック処理を省いております。

先に使用例を書いてみます。
__FILE__ と __LINE__ は、PHPのキーワードとして定義されていますので、実際には、1番目と4番目の引数を状況に合わせて書き換えるようになります。

// 使用例
writeLog(C_LOG_DEBUG, __FILE__, __LINE__, "hoge  = " . $hoge);
// ログファイル処理  (ファイルロックなし)
function writeLog($mode, $FileName, $LineNumber, $text){
  global $P_OUTPUT_TYPE;
  global $P_COMMAND;
  if ($mode >= C_LOG_Level){
    switch ($mode){
      case C_LOG_ERROR:      $logname = "■error";  break;
      case C_LOG_FATAL:      $logname = "□fatal";  break;
      case C_LOG_INFO:        $logname = "●info ";  break;
      case C_LOG_WARNING:  $logname = "◆warning";  break;
      case C_LOG_DEBUG:      $logname = "◇debug";  break;
      default:  $logname = ":::::";
    }
    // ログファイルに保存する
    if ($fno = fopen(C_LOG_FILE, 'a')){
      fputs($fno, date("Y-m-d H:i:s")
          . "t" . $logname
          . "t" . $P_OUTPUT_TYPE
          . "t" . $P_COMMAND
          . "t" . $FileName . "[" . $LineNumber . "]"
          . "t" . $text
          . "n");
      fclose($fno);
      // ファイルが最大サイズを超えていれば、日付を付与してリネーム
      if (filesize(C_LOG_FILE) > C_LOG_MAXSIZE)
        rename(C_LOG_FILE, C_LOG_FILE . "_" . date("Y-m-d") . ".txt");
    }
  }
}

広告