[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");
}
}
}