概要
Rails, PumaのLogrotate設定をしたものを、itamaeを利用して本番に反映した。
その結果、logrotateが実行された形跡はあるものの、実際にはrotateされてなかった。
また、force optionをつけて実行して、新しい logを作成したとしても、
rails の production.log が loggingされなかった。
原因
logrotateの初回実行はタイムスタンプを残すだけで、実際に rotateは行わない。
(公式ドキュメント見たい)
参考: http://catnapper-mar.hatenablog.com/entry/2015/08/30/141424
また Puma も unicornと違って、HUP シグナルを送るだけでは production.log
の reopenがされないらしい。
参考: https://github.com/puma/puma/issues/806
対応
Railsのproduction.logはcopytruncateで対応。
copytruncateはlogの欠損リスクはあるものの、
該当する時間帯のログ欠損は、現状さほど大きなリスクではないという点で一旦この方法で対応。
後ほど、td-agentも含めて対応を考える.
Note that there is a very small time slice between copying
the file and truncating it, so some log ging data might be lost.
今後の予定
cronologを試してみる。
http://qiita.com/ma2ge/items/1fba78a08e8d3b82b3c2#logger--logrotate