Ubuntuでnginxをインストールするとlogrotateの設定も一緒に入るので、access.log access.log.1 access.log.2.gz...
といった感じに1日毎にログをローテーションしてくれる。
Caddyにもログのローテーション機能はあるが毎日ローテーションする機能はない模様なので、logrotateの設定ファイルを作って似たような挙動にしてみる。
Caddyfileの設定
/etc/caddy/Caddyfile
:80 {
root * /var/www/html
file_server
log {
format console #見やすい形で保存
output file /var/log/caddy/access.log {
roll_disabled
}
}
}
ここでは/var/log/caddy/access.log
に保存するようにする。
念の為roll_disabled
でデフォルトのローテーション機能をオフにしておく。
logrotateの設定
/etc/logrotate.d/caddy
/var/log/caddy/*.log {
daily
rotate 14
copytruncate
compress
delaycompress
}
ここでは毎日ローテーションし14日分保存、遅延圧縮するように設定した。
nginxにはログを新しくできたファイルに書き込む機能があるが、Caddyにはないのでcopytruncate
オプションを使って元のファイルを維持したままローテーションできるように設定する。
動作確認
sudo logrotate -d /etc/logrotate.d/caddy
を実行し、エラーが発生していないか確認する。sudo logrotate -f /etc/logrotate.d/caddy
を実行すると手動でローテーションできるので、新しくファイルができていればOK
/var/log/caddy$ ls
access.log
/var/log/caddy$ sudo logrotate -f /etc/logrotate.d/caddy
/var/log/caddy$ ls
access.log access.log.1