はじめに

apacheのログファイルは長期間放置しておくと非常に巨大になり、ディスク容量を逼迫してシステムの正常動作を妨げる要因になりかねません。

本ページでは、apacheのログファイルを分割して保存する方法について説明します。

apacheのログファイルの分割には、LinuxのほとんどのDistributionに付属している「logrotate」や、apacheに付属する「rotatelogs」を利用する方法がありますが、ここではFreeBSDに標準で用意されている「newsyslog」を利用する方法を説明します。

「/etc/newsyslog.conf」の編集

「newsyslog」を利用するには、まず設定ファイルである「/etc/newsyslog.conf」を編集します。

「/etc/newsyslog.conf」への追記
/var/log/httpd-access.log   644   12   *   @01T00 B   /var/run/httpd.pid   30

それぞれのパラメータの意味は以下の通りです。

「/var/log/httpd-access.log」 : 分割対象のログファイルの在処

apacheのアクセスログの在処を設定します。

「644」 : 分割するログファイルのアクセス権

生成するログファイルのアクセス権(今回の例では「644=rwxr--r--」)を指定します。

「12」 : 世代管理するログファイルの数

世代管理するログの数です。「12」と指定した場合、「httpd-access.log.1」〜「httpd-access.log.12」のファイルが生成され、世代管理されます。

「*」 : ファイルサイズの上限

ログファイルのファイルサイズの上限の指定です、この箇所に任意の数字(KB単位)を指定することにより、ログファイルが一定以上の大きさになった場合、newsyslogにより自動的にログ切り出しが行われます。
今回の例のように「*」を指定すると、ファイルサイズの上限値は設定されません。

「@01T00」 : ログファイルの切り出しを時間

定期的なログファイルの切り出しを行う時間を指定します。今回の例では、毎月1日の午前0時にnewsyslogによるログ切り出しが行われます。
また、日付指定のほかにも、「@T04」(=毎日 4時)、「$W05D08」(=毎週金曜 8時)のような記述も可能です。

「B」 : ログの保存方法(圧縮保存/そのまま保存等)

ログの保存方法を指定します。今回の例のように「B」を指定した場合、バイナリファイルとして扱われ、newsyslogがログの切り出し時に挿入するメッセージを抑止します。
これ以外の指定として、ファイルが存在しなかった際に新たにファイルを生成する「C」、切り出し後にgzipで圧縮をかける「Z」同じくbzip2で圧縮をかける「J」などがあります。

「/var/run/httpd.pid」 : 作業完了時のSIGNAL送信先のpid

ログの切り出しを行った際にSIGNALを飛ばす先のプロセスのpidファイルを指定します。newsyslogのログ切り出しはapacheの起動中に行われますが、切り出しが完了した際にapacheに対してHUNGUPシグナルを送らないと、以降のapacheのログ書き込みが正しくなるため指定しています。

「30」 : 送信するSIGNAL

プロセスに送るシグナルを指定します。今回の例では「30=SIGUSR1」を指定しています。

先日まで、プロセスに送るシグナルの例として「1=HUNGUP」を挙げていましたが、HUNGUPシグナルを送信すると、apacheが停止してしまう場合があるようです。(これでハマった方、すみません)
ログの分割の際には「30=SIGUSR1」ご利用ください。

「/etc/newsyslog.conf」編集後の設定

各設定項目の詳細については「man newsyslog」および「man newsyslog.conf」を御確認ください。


あなたの探し物は見つかりましたか?
まさにこれだ
参考になった
ちょっと違う
これじゃない

何かメッセージがあればお願いします

このメッセージを非公開にする

ご注意

・頂いたメッセージは管理者のチェックの後、公開されます。
・メッセージの公開を希望されない場合には、「このメッセージを非公開にする」にチェックを入れてください。
・管理者が不適切と判断したメッセージは公開しませんので、予めご了承ください。


まさにこれだ
2 (100%)

表示できるメッセージはありません。