「logrotate」の設定
「logrotate」の設定

一般的には「logrotate」動作のデフォルトの設定ファイルは
/etc/logrotate.conf
になり、その中で
include /etc/logrotate.d
と指定されており、各ログごとの設定は /etc/logrotate.d 以下のディレクトリに作成する。

基本的な記述方法

全体のログファイルに対しての設定は
/etc/logrotate.conf
に直接ディレクティブを記述する。
各ログファイルごとに設定する場合、以下のように記述する。

ログファイル名 {
 ディレクティブ
 ディレクティブ2
 ...
}

複数のログファイルを指定する場合、スペースで区切る。
* によるワイルドカードも利用出来るが、* だけだとローテーション後のログファイルもローテーションされるので注意。
また、全体のディレクティブより各ログファイルに対してのディレクティブの方が優先順位が高い。

ディレクティブの内容

ディレクティブには以下のものがある。
基本的に no の付いているものはその設定の否定になる。

設定値 説明
create [パーミッション] [ユーザ名] [グループ名] / nocreate ローテーション (postrotate も)を行った後、代わりに空の新規ログファイルを作る。
copy / nocopy 元のログファイルはそのままにして、そのコピーを保存する。
copytruncate / nocopytruncate copy の動作を行った後、元のログファイルの内容を消去する。
rotate 数値 ログローテーションの世代数。
start 数値 初代ローテーションファイルの末尾に付加するナンバー。
extension 拡張子 ローテーションした旧ログファイルに付ける拡張子。
ドットも必要。
圧縮を行う場合、圧縮による拡張子はさらにその後ろに付く。
compress / nocompress ローテーションした後の旧ファイルを圧縮する。
compresscmd プログラム名 ログファイルの圧縮に使用するプログラム。
デフォルトは gzip
uncompresscmd プログラム名 ログファイルの解凍に使用するプログラム。
デフォルトは gunzip
compressoptions オプション 圧縮プログラムへ渡すオプション。
デフォルトは gzip に渡す "-9" (圧縮率最大)。
現在のところ、スペース入りで複数のオプションを指定することは不可能
compressext 拡張子 圧縮後のファイルに付ける拡張子。
ドットも必要。
delaycompress / nodelaycompress 圧縮処理を、その次のローテーションの時まで遅らせる。
compress も指定しないと無意味。
olddir ディレクトリ / noolddir ローテーションした旧ログをディレクトリに移動する。
移動先は元と同じデバイス上でなければならない。
元のログに対する相対指定も有効。
mail メールアドレス / nomail 旧ログファイルをメールアドレスに送信する。
どの段階のものを送るかは maillast,mailfirst のオプションで決める。
maillast 最終世代後の破棄されるログをメールする(デフォルト)。
mailfirst 初代ローテーションログをメールする
daily / weekly / monthly ログローテーションを日毎/週毎/月毎に行う。
size サイズ ログがサイズを超えていればローテーションを行う。
この条件は daily, weekly などの条件より優先される。
KやMでの指定も可能。
ifempty / notifempty 元のログファイルが空でもローテーションを行う。
missingok / nomissingok 指定のログファイルが実在しなかったとしてもエラーを出さずに処理続行。
firstaction
スクリプト
endscript
実際にローテーションの条件に合致するログファイルがひとつでもあった場合に、ローテーションの前に(prerotate よりも前)に一度だけスクリプトを実行する。
各ログファイルへの設定でのみ指定可能。
prerotate
スクリプト
endscript
実際にローテーションの条件に合致するログファイルがひとつでもあった場合に、ローテーションの前に(firstaction より後)にスクリプトを実行する。
各ログファイルへの設定でのみ指定可能。
postrotate
スクリプト
endscript
実際にローテーションが行われた後(lastaction より前)にスクリプトを実行する。
各ログファイルへの設定でのみ指定可能。
lastaction
スクリプト
endscript
実際にローテーションが行われた後(postrotate より後)に一度だけスクリプトを実行する。
各ログファイルへの設定でのみ指定可能。
sharedscripts ローテーションの条件に合致するログが複数あった場合に、prerotate, postrotate のスクリプトを一度だけ実行する。
nosharedscripts ローテーションの条件に合致するログが複数あった場合に、prerotate, postrotate のスクリプトを各ログファイル毎に実行する。
include ファイル名,ディレクトリ名 設定ファイル内でこの記述のある位置に別の設定ファイルを読み込む。
tabooext [+] 拡張子1,拡張子2... include でディレクトリを指定した場合に読み込みから除外するファイルの拡張子を指定。
+ を指定すると追加、指定しないと置き換えとなる

logrotate コマンドを実行する場合、 -d オプションを付けるとデバッグモードで実行され、動作が詳細に出力されるだけである。
その為

Unix# logrotate -d 個別設定ファイル名

とすると設定ファイルの確認ができる。

▲ページのトップへ