Caddyとlogrotateの併用について
History
#Linux #Caddy #Logrotate

Ubuntuでnginxをインストールするとlogrotateの設定も一緒に入るので、access.log access.log.1 access.log.2.gz...といった感じに1日毎にログをローテーションしてくれる。
Caddyにもログのローテーション機能はあるが毎日ローテーションする機能はない模様なので、logrotateの設定ファイルを作って似たような挙動にしてみる。

https://caddyserver.com/docs/caddyfile/directives/log#file

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

参考

« Cloudflare PagesでHugoのGitInfoが使えない問題
Caddyでnginxの444のように何も返さない設定 »