WindowsにインストールしたApache HTTPサーバーのログローテの設定方法を自分のメモも兼ねて紹介したいと思います。
ログローテ設定方法
Apacheはデフォルトでは、アクセスログとエラーログの2つをログ出力していると思います。
名前の通りですが、サーバーにアクセスした情報を記録するアクセスログ、Apacheのエラー情報を出力するエラーログになります。
どちらも、デフォルトではログローテを行う設定にはなっていないため、長期間稼働するシステムではログファイルが大きくなりますので、基本的にはログローテの設定を行うと思います。以下でそれぞれ設定例を見ていきます。
access.logのログローテ
・デフォルト
簡単に説明しますと、LogFormatディレクティブでログの出力フォーマットを決定します。
そして、CustomLogディレクティブにてログファイル名と出力フォーマットを指定します。
ちなみに、引数のログファイル名が絶対パスでないときは、ServerRootからの相対パスとみなされます。これはエラーログも同様です。
LogFormat "%h %l %u %t \"%r\" %>s %b" common CustomLog "logs/access.log" common
・ログローテ設定後
ファイル名のフォーマットは「access_%Y%m%d.log」としており、年月日を付与しています。また、他にもログローテするタイミング(時間)などを指定します。
ここらへんの引数の指定内容については、"rotatelogs"を説明したページを見ていただければと思います(記事の最後にURLを添付しています)。
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined CustomLog "| bin/rotatelogs.exe logs/access_%Y%m%d.log 86400 540" combined
ちなみに、LogFormatとCustomLogディレクティブは以下のようにmod_log_configモジュールを読み込む必要があります。私の環境では、デフォルトで読み込んでありました。
LoadModule log_config_module modules/mod_log_config.so
error.logのログローテ
・デフォルト
デフォルトでは、ErrorLogディレクティブにエラーログファイル名を指定しているだけです。
ErrorLog "logs/error.log"
・ログローテ設定後
エラーログもアクセスログとまったく同じように設定できます。
ErrorLog "| bin/rotatelogs.exe logs/error_%Y%m%d.log 86400 540"
ログローテ設定後
上記ログローテ設定後は、以下のように日付が付いてファイルが出力されるようになります。この日付は、rotatelogs.exeの引数に指定した形式になります。
以下のキャプチャでは、アクセスログが「access_20210823.log」で、エラーログが「error_20210823.log」ですね。
おわりに
いかがでしたでしょうか。ログローテの設定は、ほぼ実施することが多いと思いますので是非内容を確認して設定いただければと思います。
ちなみに、以下の参考URLですが一応日本語のページですができるならば英語で見たほうが良さそうです。なぜならば、日本語だと翻訳されていなかったり記述がやや理解しづらいところもあったりなので。
最後までお読みいただきありがとうございました。今回はこの辺で失礼いたします。