apacheのログファイルは長期間放置しておくと非常に巨大になり、ディスク容量を逼迫してシステムの正常動作を妨げる要因になりかねません。
本ページでは、apacheのログファイルを分割して保存する方法について説明します。
apacheのログファイルの分割には、LinuxのほとんどのDistributionに付属している「logrotate」や、apacheに付属する「rotatelogs」を利用する方法がありますが、ここではFreeBSDに標準で用意されている「newsyslog」を利用する方法を説明します。
「newsyslog」を利用するには、まず設定ファイルである「/etc/newsyslog.conf」を編集します。
/var/log/httpd-access.log 644 12 * @01T00 B /var/run/httpd.pid 30
それぞれのパラメータの意味は以下の通りです。
apacheのアクセスログの在処を設定します。
生成するログファイルのアクセス権(今回の例では「644=rwxr--r--」)を指定します。
世代管理するログの数です。「12」と指定した場合、「httpd-access.log.1」〜「httpd-access.log.12」のファイルが生成され、世代管理されます。
ログファイルのファイルサイズの上限の指定です、この箇所に任意の数字(KB単位)を指定することにより、ログファイルが一定以上の大きさになった場合、newsyslogにより自動的にログ切り出しが行われます。
今回の例のように「*」を指定すると、ファイルサイズの上限値は設定されません。
定期的なログファイルの切り出しを行う時間を指定します。今回の例では、毎月1日の午前0時にnewsyslogによるログ切り出しが行われます。
また、日付指定のほかにも、「@T04」(=毎日 4時)、「$W05D08」(=毎週金曜 8時)のような記述も可能です。
ログの保存方法を指定します。今回の例のように「B」を指定した場合、バイナリファイルとして扱われ、newsyslogがログの切り出し時に挿入するメッセージを抑止します。
これ以外の指定として、ファイルが存在しなかった際に新たにファイルを生成する「C」、切り出し後にgzipで圧縮をかける「Z」同じくbzip2で圧縮をかける「J」などがあります。
ログの切り出しを行った際にSIGNALを飛ばす先のプロセスのpidファイルを指定します。newsyslogのログ切り出しはapacheの起動中に行われますが、切り出しが完了した際にapacheに対してHUNGUPシグナルを送らないと、以降のapacheのログ書き込みが正しくなるため指定しています。
プロセスに送るシグナルを指定します。今回の例では「30=SIGUSR1」を指定しています。
先日まで、プロセスに送るシグナルの例として「1=HUNGUP」を挙げていましたが、HUNGUPシグナルを送信すると、apacheが停止してしまう場合があるようです。(これでハマった方、すみません)
ログの分割の際には「30=SIGUSR1」ご利用ください。
各設定項目の詳細については「man newsyslog」および「man newsyslog.conf」を御確認ください。
・頂いたメッセージは管理者のチェックの後、公開されます。
・メッセージの公開を希望されない場合には、「このメッセージを非公開にする」にチェックを入れてください。
・管理者が不適切と判断したメッセージは公開しませんので、予めご了承ください。
まさにこれだ 2 (100%) |
表示できるメッセージはありません。