ログローテーション
logrotateは、デーモンではなくcronによって実行されます。
logrotateの設定ファイルを変更しても、サービスを再起動する必要はありません。
logrotateの設定ファイルのパスは、/etc/logrotate.confです。
また、/etc/logrotate.d配下の、.confで終わるファイルもインポートされます。
AlmaLinux9 の初期設定では、以下のような設定になっています。
/etc/logrotate.conf
# see "man logrotate" for details
# global options do not affect preceding include directives
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# use date as a suffix of the rotated file
dateext
# uncomment this if you want your log files compressed
#compress
# packages drop log rotation information into this directory
include /etc/logrotate.d
# system-specific logs may be also be configured here. 設定ファイル
AlmaLinux9 では、設定ファイルやディレクトリの構成は以下のようになっています。
- /etc
- logrotate.conf # メインの設定ファイル
- logrotate.d # 各サービスごとの設定ファイル
- ...
- dnf
- firewalld
- httpd
- ...
/etc/dnfの初期設定は、以下のようになっていました。
/var/log/hawkey.log {
missingok
notifempty
rotate 4
weekly
create
} 設定オプション
logrotateの設定オプションには、以下のようなものがあります。
| オプション | 内容 |
|---|---|
| compress | ローテーションしたログをgzipで圧縮 |
| copytruncate | ログファイルをコピーし、内容を削除 |
| create | |
| daily | ログを毎日ローテーションする |
| monthly | ログを毎月ローテーションする |
| weekly | ログを毎週ローテーションする |
| yearly | ログを毎年ローテーションする |
| rotate 回数 | ローテーションする回数を指定 |
| size N | ログファイルのサイズがNバイトを超えるとローテートする。この指定をすると、daily、weeklyなどは無効になる |
| maxsize N | ログファイルのサイズがNバイトを超えたらローテートする。daily、weelkyなどのインターバル内であってもローテートする |
| minsize N | ログファイルのサイズがNバイトを超えたらローテートする。daily、weelkyなどのインターバル内である場合はローテートしない。 |
| missingok | ログファイルが無くてもエラー扱いしない。 |
| dateext | 古いログファイルをリネームするとき、ファイル名の語尾に日付8桁 (-YYYYMMDD)を付加 |
| create | ローテーションで更新中のログファイルを古いログファイルにリネーム (mv) した後に、すぐに同じ名前のファイルを作る。 |
| copytruncate | 更新中のログファイルを別名にmvせず、cpした後に更新中のログファイルを空にする |
| mail メールアドレス | ログがローテーション期間を超えたときに、ログを指定したメールアドレスに送信する |
| ifempty/notifempty | ifemptyを指定すると空ファイルの場合でもローテートする。notifemptyを指定すると空ファイルをローテートさせない。 |