ログローテーション - AlmaLinux

ログローテーション

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