先日centos7でrsyslogを設定する機会がありましたので、
その際に調査したログローテションの設定についての備忘録を記載します。

ローテションの設定については、

/etc/logrotate.conf
全体的な、メインの設定

/etc/logrotate.d/xxxxxx
各個々のログごとの設定

となり、

※デフォルトでは

のようにsyslogやhttpdなどがすでに存在しています。

指定したログファイルだけのローテション設定は
/etc/logrotate.d/任意の名前A
を作成し、
任意の名前Aにローテション設定をします。

今回の設定については

vi /etc/logrotate.d/任意の名前A

/var/log/指定のログがあるディレクトリ/*log  #対象のログファイル
{
missingok
ifempty
dateformat .%Y%m%d
daily
dateext
compress
rotate 45
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript

という感じで設定しました。

設定可能項目については概ね下記があるようです。

compress ローテーションしたログをgzipで圧縮

delaycompress ログの圧縮作業を次回のローテーション時まで遅らせる。compressと共に指定

nocompress ローテーションしたログを圧縮しない
copytruncate ログファイルをコピーし、内容を削除
create [パーミッション ユーザー名 グループ名] ローテーション後に空のログファイルを新規作成。ファイルのパーミッション、ユーザー名、グループ名を指定可能
daily ログを毎日ローテーションする

weekly ログを毎週ローテーションする

monthly ログを毎月ローテーションする

ifempty ログファイルが空でもローテーションする

notifempty ログファイルが空ならローテーションしない
missingok ログファイルが存在しなくてもエラーを出さずに処理を続行

nomissingok ログファイルが存在しない場合にエラーを出す

nocreate 新たな空のログファイルを作成しない

noolddir ローテーション対象のログと同じディレクトリにローテーションしたログを格納

olddir [ディレクトリ名] 指定したディレクトリ内にローテーションしたログを格納
postrotate~endscript postrotateとendscriptの間に記述されたコマンドをログローテーション後に実行
prerotate~endscript postrotateとendscriptの間に記述されたコマンドをログローテーション前に実行

sharedscripts 複数指定したログファイルに対し、postrotateまたはprerotateで記述したコマンドを実行
rotate 回数 ローテーションする回数を指定
size [ファイルサイズ] ログファイルが指定したファイルサイズ以上になったらローテーションする

※※ちなみにテストでローテション確認するため利用したコマンド
sudo /usr/sbin/logrotate -f /etc/logrotate.d/任意の名前A

このエントリーをはてなブックマークに追加