log の設定   ▲ Indexヘ
最終更新日 : 2003/02/07(森川靖大)  <<  作成日 : 2003/02/07(森川靖大)

各種 log を3ヵ月保存するように設定する.


1. 設定ファイル

どういう種類の log がとられているかは /etc/syslog.conf で設定されている.

それらの log は /etc/cron.daily/sysklogd 及び /etc/cron.weekly/sysklogd で log を定期的に分割、圧縮して一定期間保存するように設定されている.

2. 設定

2.1 /etc/cron.daily/sysklogd

$ vi /etc/cron.daily/sysklogd Enter
以下の log を保存する期間(日数)をデフォルトの 7 から 90 に変更する.
ここで保存の対象になっている log は
$ syslogd-listfiles Enter
で表示される /var/log/syslog だけである.

#! /bin/sh

# sysklogd      Cron script to rotate system log files daily.
#
#               If you want to rotate other logfiles daily, edit
#               this script.  An easy way is to add them manually
#               or to add -a to syslogd-listfiles and add some grep
#               stuff
#
#               Written by Martin Schulze .
#               $Id: cron.daily,v 1.2 1998/01/02 03:07:21 joey Exp $

cd /var/log
for LOG in `syslogd-listfiles`
do
   if [ -f $LOG ]; then
      savelog -g adm -m 640 -u root -c 90 $LOG >/dev/null
   fi
done

for LOG in `syslogd-listfiles --auth`
do
   if [ -f $LOG ]; then
      chown root.adm $LOG
      chmod o-rwx $LOG
   fi
done

# Restart syslogd
#
/etc/init.d/sysklogd reload

2.2 /etc/cron.weekly/sysklogd

$ vi /etc/cron.weekly/sysklogd Enter
以下の log を保存する期間(週数)をデフォルトの 4 から 12 に変更する.
ここで保存の対象になっている log は以下の通り.
$ syslogd-listfiles --weekly Enter
/var/log/messages
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.info
/var/log/uucp.log
/var/log/lpr.log
/var/log/user.log
/var/log/kern.log
/var/log/auth.log
/var/log/mail.log
/var/log/daemon.log
/var/log/debug

#! /bin/sh

# sysklogd      Cron script to rotate system log files weekly.
#
#               If you want to rotate logfiles daily, edit
#               this script and /etc/cron.daily/sysklogd to get
#               the logfiles in sync (they must not occur in both
#               files).  Do not delete this file itself, since
#               it will then be replaced after an upgrade creating
#               unwanted effects.
#
#               Written by Ian A. Murdock .
#               $Id: cron.weekly,v 1.2 1998/01/02 03:07:22 joey Exp $

cd /var/log
for LOG in `syslogd-listfiles --weekly`
do
   if [ -f $LOG ]; then
      savelog -g adm -m 640 -u root -c 12 $LOG >/dev/null
   fi
done

for LOG in `syslogd-listfiles --auth`
do
   if [ -f $LOG ]; then
      chown root.adm $LOG
      chmod o-rwx $LOG
   fi
done

# Restart syslogd
#
/etc/init.d/sysklogd reload


3. 補足

  1. 上記以外の log に関しては各々のサーバに合わせて設定すること.
  2. 上の例を見れば syslog も一週間毎に変更することは容易だろう.
  3. この設定だと /var/log/ 以下に大量の log ファイルがたまることになるが, /etc/syslog.conf を編集すれば log をディレクトリ毎に分割することができる.
▲ Indexヘ     作成日:2003/02/07(森川靖大)