ログローテートで対象のlogファイルをrenameする
logファイルをrotateしたかったか 理由↓↓
サイトのフォーム等で離脱があったり(アナリティクス)とかをlogに書き込み、そのログを1日1回解析するシステムにログファイルを読ませる必要があったため
その際に解析するシステム側には同じlogファイル名を参照するようにしたかったから!!!!!
では コード例から
フレームワークはlaravel、ミドルはnginxを使用してます。
# 対象のログファイル
/var/www/laravel/shared/storage/logs/analyze.log {
su nginx nginx
# 毎日ローテートする
daily
# 30世代分古いログを残す
rotate 30
# ログファイルがなくてもエラーを出さない
missingok
# ログファイルが空ならローテーションしない
notifempty
# ログファイルをコピーし、内容を削除
copytruncate
# dateフォーマットを任意のものに変更する
dateformat %Y-%m-%d
# ログローテーション後に実行
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
これをプロジェクトソース内でテキストファイルとして持っておけばサーバーに配置された後に
cp analyze.txt /etc/logrotate.d/analyze
でlog rotateに設定完了。
テストしたいときは
logrotate analyze
なり
logrotate -f analyze
de
実行してください。
これで毎日、
analyze.log2019-09-04
analyze.log2019-09-05
analyze.log2019-09-06
analyze.log
といった具合にファイルが作らて、
analyze.logが本日付のファイルで次の日になったら
analyze.log2019-09-07が作成されます。
以上