失敗
CustomLog "|usr/local/apache2/bin/rotatelogs logs/access_log 86400" common
上記のように rotatelogs を使用して、ログファイルをローテーションさせたところ、ログファイルの名前が access_log.1075075200 といったものになってしまいました。 これじゃあ、何時のログだか分かりにくいんですけど…。
環境
このレポートは、以下の環境について記述したものです。
| OS | SUSE Linux 9.1 |
| Web サーバ | Apache 2.0 |
原因
ログファイルの名前に日付フォーマット文字列を指定しない場合は、ファイル名の末尾に 1970 年 1 月 1 日 00:00:00 からの経過秒数が付加されます。 このため、access_log.1075075200 というようなファイル名になってしまったわけです。
解決策
ログファイルの名前を分かりやすいものにするには、日付フォーマット文字列を使用します。
(1) ファイル名に日付フォーマット文字列を付け
rogtatelogs に指定しているログファイル名に、フォーマット文字列を付けます。
以下に、ファイル名の末尾に年月日を付けてローテーションさせる設定を示します。
CustomLog "|usr/local/apache2/bin/rotatelogs logs/access_log.%Y%m%d 86400" common
■ 日付フォーマット文字列
rotatelogs の代表的なフォーマット文字列を挙げます。
| %A | 曜日 (すべて)。 [例] Wednesday |
| %a | 曜日 (3 文字)。 [例] Wed |
| %B | 月の名前 (すべて)。 [例] March |
| %b | 月の名前 (3 文字)。 [例] Mar |
| %c | 日付および時刻。 [例] Wed Mar 16 00:00:00 2005 |
| %d | 日。 [例] 16 |
| %m | 月。 [例] 03 |
| %Y | 年 (4 桁)。 [例] 2005 |
| %y | 年 (2桁)。 [例] 05 |
補足
■ rotatelogs の書式
rotatelogs の書式は以下の通りです。
rotatelogs <ログファイル> <ローテーション間隔> <最大ファイルサイズ>
| ログファイル | ログファイルのパスを指定します。ファイル名には日付フォーマット文字列が使用できます。 |
| ローテーション間隔 | ローテーションを行う間隔を秒単位で指定します。 |
| 最大ファイルサイズ | 最大ファイルサイズを MB 単位で指定します。 |
参考サイト
- Apache HTTP SERVER PROJECT - rotatelogs (Apache 2.2)
- Apache HTTP SERVER PROJECT - rotatelogs (Apache 2.0)
履歴
- 2007/02/03 - 参考サイトを修正
