3. メンテナンス・トラブルシュート - PHP - ログの出力 - ログの書式

 
3.1 タイムスタンプ
3.2 書式は変えられないのか?
3.3 アプリケーションログを変更

3.1 タイムスタンプ

 ログの書式ですが、わたしが一番気になるのが、タイムスタンプなのです。

[10-Jul-2018 17:20:34 Asia/Tokyo] PHP Deprecated:  ...
 てな感じで出力されます・・・。  いわゆる欧米式ですな。  何が嫌いって、ばらした後、ソートできないじゃん。  「Asia/Tokyo」ってのも気になります。「JST」でいいじゃんって思うんですけどね。

3.2 書式は変えられないのか?

 php.ini をいじって書式が変えられないかと調べてみましたが、方法はなさそうです。  ソースをハックして、書き換えるって手もあるのでしょうが。  さすがにその時間と元気はありません。

3.3 アプリケーションログを変更

 仕方ないので、アプリケーションログを変更することにしました。  もとはこういう風に書いていたのですが
<?php
/**
 * エラーログ
 * @param string $message
 */
function errorlog($file, $function, $line, $message)
{
	$messageEx  = sprintf("%s ", date("Y-m-d H:i:s"));
	$messageEx .= sprintf("%-24s ", $file);
	$messageEx .= sprintf("%-8s ", $function);
	$messageEx .= sprintf("%5d ", $line);
	$messageEx .= $message;
	$messageEx .= "\n";

	error_log($messageEx, 3, '/パス/ファイル名.log');
}
?>

 このままだとタイムスタンプが

2018-07-10 17:31:02
 てな感じで出力されるので、php のログに合わせて
<?php
/**
 * エラーログ
 * @param string $message
 */
function errorlog($file, $function, $line, $message)
{
	$messageEx  = sprintf("%s ", '['.date("d-M-Y H:i:s").' '.date_default_timezone_get().'] ');
	$messageEx .= sprintf("%-24s ", $file);
	$messageEx .= sprintf("%-8s ", $function);
	$messageEx .= sprintf("%5d ", $line);
	$messageEx .= $message;
	$messageEx .= "\n";

	error_log($messageEx, 3, '/パス/ファイル名.log');
}
?>

 という書き方にしました。