参照:【日本語man】logrotateの全オプション解説
参照:@IT
目次
頻度に関わるキーワード
- daily
- ログを毎日ローテーションする
- weekly
- ログを毎週ローテーションする
- monthly
- ログを毎月ローテーションする
- size ファイルサイズ
- ログファイルが指定したファイルサイズ以上になったらローテーションする
ローテーション実行に関わるキーワード
- ifempty
- ログファイルが空でもローテーションする
- notifempty
- ログファイルが空ならローテーションしない
- missingok
- ログファイルが存在しなくてもエラーを出さずに処理を続行
- nomissingok
- ログファイルが存在しない場合にエラーを出す
ローテーション実行時に実行する処理に関わるキーワード
- postrotate~endscript
- postrotateとendscriptの間に記述されたコマンドをログローテーション後に実行
- prerotate~endscript
- postrotateとendscriptの間に記述されたコマンドをログローテーション前に実行
- sharedscripts
- 複数指定したログファイルに対し、postrotateまたはprerotateで記述したコマンドを実行
(まとめて1回) - nosharedscripts
- 複数指定したログファイルに対し、postrotateまたはprerotateで記述したコマンドを実行
(ファイルごとに実行)
ローテーション後のログファイルの作り方に関わるキーワード
- create パーミッション ユーザー名 グループ名
- ローテーション後に空のログファイルを新規作成。ファイルのパーミッション、ユーザー名、グループ名を指定可能
- nocreate
- 新たな空のログファイルを作成しない
ローテーションする際のファイルの作り方に関わるキーワード
- copytruncate
- ログファイルをコピーし、内容を削除
通常は `mv logfile rotatefile; touch logfile` 、このキーワードをつけることで `cp logfile rotatefile; echo "" > logfile` と同等の動作となる。
ログファイルを掴み続けるアプリケーションの場合、 `mv logfile rotatefile` としてもログの出力は rotatefile に続く。
cp → ファイルを空にする間若干のログが失われる。
[参考:https://blog.willnet.in/entry/20081001/1222836601](https://blog.willnet.in/entry/20081001/1222836601)
ローテート後のファイルに関わるキーワード
- rotate 回数
- ローテーションする回数を指定
- su ユーザー名 グループ名
- 指定されたユーザーとグループで、ログファイルをローテーションします。通常、デフォルトはいずれもrootです。ユーザー名にはローテーションに用いるユーザー名、グループ名にはローテーションに用いるグループ名を指定します。
- noolddir
- ローテーション対象のログと同じディレクトリにローテーションしたログを格納
- olddir ディレクトリ名
- 指定したディレクトリ内にローテーションしたログを格納
- dateext
- 日付型をファイル末尾に付与する
- dateformat
- 末尾に付与する日付フォーマットの変更(デフォルト:-%Y%m%d)
ローテート後のファイルの圧縮に関わるキーワード
- nocompress
- ローテーションしたログを圧縮しない
- compress
- ローテーションしたログをgzipで圧縮
- delaycompress
- ログの圧縮作業を次回のローテーション時まで遅らせる。compressと共に指定。
この指定がないと圧縮中にログの追記があった場合にエラーが発生する
使いそうなパターン例
/path/to/logfile1, /path/to/logfile2, /path/to/logfile_error* { daily rotate 365 create 644 [サービス実行ユーザー] [サービス実行グループ] dateext dateformat -%Y%m%d compress delaycompress olddir /path/to/archives su [ローテーション実行ユーザー] [ローテーション実行グループ] ifempty missingok }