はじめに
ログローテーションを設定する際のコマンドをその都度調べていたので、自分専用のメモを残しておきました。
なお、この記事はこちらをほとんど参考にしています。
書式
ローテーションする期間に関する設定
コマンド | 内容 |
rotate 回数 | ローテーションする回数を指定する。 |
daily | ログを毎日ローテーションする。 |
weekly | ログを1週間でローテーションする。 |
month | ログを1ヶ月でローテーションする。 |
ファイル名に関する設定
コマンド | 内容 |
dateext | ファイル名の末尾をYYYYMMDD形式で生成する。 |
ファイルの容量に関する設定
コマンド | 内容 |
compress | ローテーションしたログをgzipで圧縮する。 |
nocompress | ローテーションしたログをgzipで圧縮しない。 |
copytruncate | ログファイルをコピーし、内容を削除する。 |
size [ファイルサイズ] | ログファイルが指定したファイルサイズ以上になったらローテーションする。 |
ファイル生成・実行に関する設定
コマンド | 内容 |
create | ローテーション後に空のログファイルを作成する。 |
nocreate | ローテーション後に空のログファイルを作成しない。 |
ifempty | ログファイルが空でもローテーションする。 |
notifempty | ログファイルが空ならローテーションしない |
missingok | ログファイルが存在しなくてもエラーを出さずに処理を続行する。 |
nomissingok | ログファイルが存在しない場合にエラーを出す。 |
olddir [ディレクトリ名] | 指定したディレクトリ内にローテーションしたログを格納する。 |
ログローテーションの設定ファイルに関する設定
コマンド | 内容 |
postrotate~endscript | postrotateとendscriptの間に記述されたコマンドをログローテーション後に実行する。 |
prerotate~endscript | postrotateとendscriptの間に記述されたコマンドをログローテーション前に実行する。 |
設定例
/var/log/logtest/rt01というログファイルをログローテーションさせる設定です。
1 2 3 4 5 6 7 8 9 10 11 12 |
[root@localhost ~]# cat /etc/logrotate.d/syslog /var/log/logtest/rt01 { missingok daily ifempty rotate 10 sharedscripts postrotate /usr/bin/systemctl kill -s HUP rsyslog.service >/dev/null 2>&1 || true endscript } |