LoginSignup
9
3

More than 3 years have passed since last update.

ログローテートで対象の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が作成されます。

以上

9
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
3