技術メモ

Apacheのaccess_logのローテーション設定

Webアクセスログのローテーションの仕組みがどうなってるのか確認します。

 

0.環境

項目 バージョン
CentOS 7.7.1908 (Core)
Apache 2.4.6

ちなみにデフォルトだとこんな感じで大体1週間ごとにファイルが分かれて1ヶ月間保存されています。

 

1.httpd.conf

Apacheのログを吐く設定がどうなってるのか確認。

<IfModule log_config_module>

〜略〜

CustomLog "logs/access_log" combined

〜略〜

</IfModule>

「ServerRoot」配下の「logs/access_log」にログ出力しています。

「ServerRoot」配下の「logs」ディレクトリは別のディレクトリにシンボリックリンクされている場合があります。

 

2.ローテーション設定

/etc/cron.daily/logrotate で、毎日自動でlogrotateコマンドが実行されています。

/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf

 

3.logrotate.conf

# see "man logrotate" for details

# rotate log files weekly

weekly

# keep 4 weeks worth of backlogs

rotate 4

〜略〜

# RPM packages drop log rotation information into this directory

include /etc/logrotate.d

weekly」で週1でファイルを切り替え、「rotate 4」で4ファイルでローテーションするという設定になっています。

個別に設定をいじるときは「/etc/logrotate.d」をincludeしてるので、「/etc/logrotate.d/httpd」に設定します。

/etc/logrotate.d/httpdのデフォルト:

/var/log/httpd/*log {

    missingok

    notifempty

    sharedscripts

    delaycompress

    postrotate

        /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true

    endscript

}