Apache | ログファイル | ログローテーション(rotatelogs)
ログは、特に指定しなければ1つのファイルに記録され続ける。別途設定すれば、一定期間ごとに別ファイルへ切り替えて記録できる。たとえば1日単位で別のログファイルに記録するようにすると、管理しやすくなる。
ログローテーション(rotatelogs)
Apacheでは、ログをローテーションするユーティリティプログラムが提供されている。{Apacheインストールディレクトリ}/Apache24/binディレクトリに入っているrotatelogsプログラムを使用する。
使い方は次のとおりである。
rotatelogs 対象ログファイル 指定時間
指定時間は、ログを分割する時間を秒単位で指定する。1日単位であれば60 x 60 x 24 = 86400を指定する。
ログローテーションはhttpd.confで設定して自動化できる。設定するには、CustomLogに対して次のように設定する。
CustomLog "| rotatelogs 対象ログファイル 指定時間" ログ形式名
たとえば、commonログフォーマットを使用して1日単位のログローテーションを設定するには、次のように記述する。
CustomLog logs/access.log common
CustomLog "|bin/rotatelogs.exe logs/access.log 86400" common
Windowsでは、必ずrotatelogsの後に.exeを付ける必要がある。
これでログが保存されるとき、指定した時間が経過するたびに別のログファイルを作成して記録するようになる。
では実際に試してみる。先ほどの設定をhttpd.confに設定し、Apacheを再起動する。そしてApacheで公開されたファイルにアクセスする。
C:\apache\Apache24\logs>dir
C 드라이브의 볼륨에는 이름이 없습니다.
볼륨 일련 번호: XXXX-XXXX
C:\apache\Apache24\logs 디렉터리
2019-12-07 오전 01:40 <DIR> .
2019-12-07 오전 01:40 <DIR> ..
2019-12-07 오전 01:40 427 access.log
2019-12-07 오전 01:40 0 access.log.1575590400
2019-12-07 오전 01:40 532 error.log
2019-12-07 오전 01:40 6 httpd.pid
4개 파일 965 바이트
2개 디렉터리 450,662,526,976 바이트 남음
C:\apache\Apache24\logs>
上のように、新しくaccess.log.1575590400というファイルが作成され、ログが保存されている。末尾の.1575590400は、1970年1月1日以降の時間を秒単位で表している。
次に、クライアントに設定されている日付を2日進めた後、再びApacheのファイルにアクセスしてみる。
C:\apache\Apache24\logs>dir
C 드라이브의 볼륨에는 이름이 없습니다.
볼륨 일련 번호: XXXX-XXXX
C:\apache\Apache24\logs 디렉터리
2019-12-09 오전 01:51 <DIR> .
2019-12-09 오전 01:51 <DIR> ..
2019-12-07 오전 01:40 427 access.log
2019-12-07 오전 01:41 475 access.log.1575590400
2019-12-09 오전 01:51 0 access.log.1575763200
2019-12-07 오전 01:40 532 error.log
2019-12-07 오전 01:40 6 httpd.pid
5개 파일 1,440 바이트
2개 디렉터리 450,650,722,304 바이트 남음
C:\apache\Apache24\logs>
以前作成されたログから86400秒以上経過したため、新しいログファイルが作成され、記録されている。
ログファイルの形式を指定する
特に設定しない場合、ログファイル名の後ろに1970年1月1日以降の時間が秒単位で表示される。このままでは分かりにくいため、ログを区別するために付く部分のフォーマットを指定できる。たとえば、秒ではなく日付を表示するには次のように記述する。
CustomLog "|bin/rotatelogs.exe logs/access.log.%Y-%m-%d 86400" common
対象ログファイル名の後にピリオド(.)を入力し、フォーマットを指定する。今回は日付をハイフンで区切った形式にした。
では実際に試してみる。上記の設定をhttpd.confに設定し、Apacheを再起動する。そしてApacheで公開されたファイルにアクセスする。
C:\apache\Apache24\logs>dir
C 드라이브의 볼륨에는 이름이 없습니다.
볼륨 일련 번호: XXXX-XXXX
C:\apache\Apache24\logs 디렉터리
2019-12-07 오전 02:05 <DIR> .
2019-12-07 오전 02:05 <DIR> ..
2019-12-07 오전 02:04 122 access.log
2019-12-07 오전 02:04 122 access.log.2019-12-06
2019-12-07 오전 02:05 1,287 error.log
3개 파일 1,531 바이트
2개 디렉터리 450,652,733,440 바이트 남음
C:\apache\Apache24\logs>
今回は、指定した形式で日付が追加された。