ITエンジニアの成長ブログ

ITエンジニアとして行う勉強の発信&日々の生活で体験した楽しいことをゆるく発信

WindowsのApache HTTPサーバーのログローテの設定方法

WindowsにインストールしたApache HTTPサーバーのログローテの設定方法を自分のメモも兼ねて紹介したいと思います。

環境

今回の設定に関しては、以下の環境で動作確認しました。
OS : Windows 10 Home
Apache : Apache/2.4.48

ログローテ設定方法

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」ですね。

f:id:mr_star:20210823205129p:plain
Apacheログローテ設定後①

おわりに

いかがでしたでしょうか。ログローテの設定は、ほぼ実施することが多いと思いますので是非内容を確認して設定いただければと思います。
ちなみに、以下の参考URLですが一応日本語のページですができるならば英語で見たほうが良さそうです。なぜならば、日本語だと翻訳されていなかったり記述がやや理解しづらいところもあったりなので。

最後までお読みいただきありがとうございました。今回はこの辺で失礼いたします。