Apacheのログ・ローテーション設定

概要

【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc.  詳細はこちらから>

Apacheのログファイルは、初期の何も設定していない状態では同じファイルにログを出力するため、気が付くとログのサイズが数GBというような大きいサイズとなっていることがあります。

そこで、rotatelogs.exeというプログラムを使用して、ログファイルを分割、または、ローテーションする設定について紹介します。

rotatelogs.exeとは、Windows版Apacheに標準的にインストールされているプログラムとなります。

〇rotatelogs.exeの使い方

<roglate.exeへのパス> <ログファイル名> <ローテーション期間 or ローテーションサイズ> <UTCとのオフセット>

ログファイルの分割について

Apacheの設定ファイルである「httpd.conf」ファイルを変更してログファイルの分割を行えるようにします。

<ローテーション期間を設定する場合>

変更前

CustomLog “logs/access.log” common

変更後

CustomLog “| bin/rotatelogs.exe logs/access.log 86400 540” common

ローテーション期間に設定されている86400は60(秒)×60(分)×24(時間)を計算して、1日でローテーションするように設定しています。

1時間ごとにローテーションさせたい場合は3600を設定します。

UTCとのオフセットは協定世界時と日本の時差は9時間となるため、9(時間)×60(分)で540となります。

<ローテーションサイズを設定する場合>

変更前

CustomLog “logs/access.log” common

変更後

CustomLog “| bin/rotatelogs.exe logs/access.log 100M 540” common

ローテーションサイズはB or K or M or Gのいずれかのサイズで指定ができます。

また、以下のようにログファイル名を指定すると年月日や時刻付きのログファイルを出力することができます。

上記の様に設定すると以下のようなファイルが出力されます。

ログファイルのローテーションについて

roglate.exeのオプションに-nを指定することでログファイルをローテーションすることができます。

変更前

CustomLog “logs/access.log” common

変更後

CustomLog “| bin/rotatelogs.exe -n 5 logs/access.log 86400 540” common

上記のように設定を行うと下記のようにファイルが作成されます。

1日ごとにログファイルがローテーションすることになります。

「access.log.4」の次は「access.log」にログが書き込まれることになります。

その際はもともと「access.log」に出力されていたログは消失します。

注意:このオプションはApache2.4.5以降でしか使用できません。

【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>

Smallitのサービス