たまにどうだったっけ?と思うことがあるのでひな形を置いておく。
今回のひな形はApacheのcombinedっぽいログが取れるもの。
リモートログ名以外はApacheのcombinedと同じようなものが出力されるようになっているはずです。
/*
* アクセスログ
*/
// 初期化
$log = '';
$RA = '';
$RRU = ' - ';
$HR = ' "-" ';
$date = new DateTime();
/*
* ログ情報取得
*/
// リモートホスト
$RA = $_SERVER['REMOTE_ADDR'] . ' ';
// ユーザーエージェント
$UA = ' "' . $_SERVER['HTTP_USER_AGENT'] . '"';
// 時刻
$log = ' [' . $date->format('d/M/Y:H:i:s O') . '] ' . '"' . $_SERVER['REQUEST_METHOD'] . ' ' . $_SERVER['REQUEST_URI'] . ' ' . $_SERVER['SERVER_PROTOCOL'] . '" ' . $_SERVER["REDIRECT_STATUS"] . ' ';
// 認証ユーザー名
if( isset($_SERVER['REDIRECT_REMOTE_USER']) ) {
$RRU = $_SERVER['REDIRECT_REMOTE_USER'];
}
// リファラー
if( isset($_SERVER['HTTP_REFERER']) ) {
$HR = '"' . $_SERVER['HTTP_REFERER'] . '"';
}
/*
* ログ組立
*/
$access_log = $RA . $RRU . $log . $HR . $UA;
/*
* ログ書き込み
*/
file_put_contents($date->format('Ym') . '.log', $access_log . "\n", FILE_APPEND | LOCK_EX);
結果はこんな感じで記録されます。
180.60.237.235 - [28/May/2015:22:13:22 +0900] "GET /log.php HTTP/1.1" 200 "-" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36"
180.60.237.235 - [28/May/2015:22:15:56 +0900] "GET /log.php HTTP/1.1" 200 http://zeijaku.net/log.php" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36"
いまどきアクセスログを自作することも無いですが、たまに試験なんかで簡易に取るときに突っ込んだりするので置いておきます。
関連記事