ログローテーション
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を指定すると空ファイルをローテートさせない。 |