ショコラ
ドッカーコンテナのボリュームに書き出しているログをローテーションするには?
logrotate でログファイルをローテーションさせます。
logrotate -f /etc/logrotate.d/nginx で手動で実行できます。
もっさん先輩
/etc/logrotate.d/syslog には↓のように記載されていました。参考まで。
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
missingok
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
nginx の設定ファイルを用意しました。
# 対象のログファイル
(ボリュームのパス)/var/log/nginx/access.log
(ボリュームのパス)/var/log/nginx/error.log
{
# 777 のディレクトリ対応
su root root
# ログファイルが空っぽでもローテーションを行う。
ifempty
# ログファイルがなくてもエラーにしない。
missingok
# ログファイルを圧縮する。
#compress
# 毎日ローテーションさせる。
daily
# 10世代分ログを残す。
rotate 10
postrotate
docker exec docker-nginx-1 sh -c 'kill -USR1 `cat /var/run/nginx.pid`'
endscript
}
アパッチの設定ファイルを用意しました。
# 対象のログファイル
(ボリュームのパス)/var/log/httpd/access_log
(ボリュームのパス)/var/log/httpd/error_log
(ボリュームのパス)/var/log/httpd/ssl_access_log
(ボリュームのパス)/var/log/httpd/ssl_error_log
(ボリュームのパス)/var/log/httpd/ssl_request_log
{
# 777 のディレクトリ対応
su root root
# ログファイルが空っぽでもローテーションを行う。
ifempty
# ログファイルがなくてもエラーにしない。
missingok
# ログファイルを圧縮する。
#compress
# 毎日ローテーションさせる。
daily
# 10世代分ログを残す。
rotate 10
postrotate
docker exec docker-httpd-1 sh -c 'kill -USR1 `cat /var/run/httpd/httpd.pid`'
endscript
}
手動でローテートする場合は↓を実行します。
logrotate -f /etc/logrotate.d/nginx
logrotate -f /etc/logrotate.d/httpd
以上