Apacheのログ・ローテーション設定(access_log、error_logのlogrotate) [Fedora, RedHat]
作成:2006-03-09
Apacheのログ・ローテーション設定(access_log、error_logのlogrotate)方法。
対象:Linux Fedora, RedHat
Apacheのログ・ローテーション設定(access_log、error_logのlogrotate)
-
Apacheのログ(access_log、error_log)は、初期設定では同じファイルに追記していきます。
日々ファイルが肥大化していきます。
これを日別、月別など、一定期間ごとにファイルを分けて記録するには、ログ・ローテート(logrotate)を利用します。
Apacheについては、Apache・aprのインストール・設定を参照。
-
ローテーションの設定サンプル
設定ファイルの元は、
/etc/logrotate.conf
です。
/etc/logrotate.confを見ると、/etc/logrotate.d/以下のファイルをincludeしていることが分かります。
/etc/logrotate.d/にアプリケーションごとに、個別にファイルを作って設定した方が分かりやすいと思います。
ファイルがない場合は、自分で作ります。
vi /etc/logrotate.d/httpd2
/usr/local/apache2/logs/access_log /usr/local/apache2/logs/error_log {
missingok
notifempty
sharedscripts
daily
rotate 30
postrotate
service httpd2 restart
endscript
}
Apacheを再起動
service httpd2 restart
上記の例では、httpd2ファイルにaccess_logとerror_logを並べて書いてますが、
複数のファイルを指定する場合は、このようにスペースで区切って並べて書きます。
/etc/logrotate.d/以下にファイルを作れば、その他のログに関しても利用できます。
通常ログファイルは、/var/log/などにあります。
rpm、apt-get、yumなどを利用してインストールしたものは、自動的にlogrotateが設定される場合があります。
ソースからコンパイルしたアプリケーションの場合は、/var/log/以外のディレクトリにログを保存する場合があるので、
上記の例のように、自分でログファイルがあるディレクトリを指定します。
-
logrotateのコマンド
・ローテーションの実行・回数
daily 毎日
weekly 毎週
monthly 毎月
rotate 指定した回数ローテーション(いくつログファイルを残すか)
rotate [ローテーション回数]
・ログの圧縮
compress ログをgzipで圧縮
nocompress 圧縮しない
・その他
ifempty ログファイルが空の場合でもローテーション
notifempty ログファイルが空の場合ローテーションしない
missingok ログファイルが存在しない場合にエラーを出力しない
nomissingok ログファイルが存在しない場合にエラーを出力
postrotate endscriptとの間に書いたコマンドをローテーション後に実行
prerotate endscriptとの間に書いたコマンドをローテーション前に実行
size ログファイルが指定サイズ以上の場合ローテーション
size [ファイルサイズ]
sharedscripts ログファイルを複数指定した場合、それぞれpostrotate、prerotate内のコマンドを実行
create ローテーション後、空のログファイルを作成
create [パーミッション] [ユーザ名] [グループ名] で権限の指定可能
nocreate 空のログファイルを作成しない
olddir 指定したディレクトリにローテーションしたログを保存
olddir [ディレクトリ名]
noolddir 元と同じディレクトリにローテーションしたログを保存
-
logwatch.plの実行
perl /etc/log.d/scripts/logwatch.pl