Railsのログが肥大化する問題
Railsの開発をしていると、development.log
やtest.log
がどんどん肥大化していきます。
ローカル環境のログであれば、数日前のログが見たいと思うことは滅多にないはずです。
肥大化したログファイルは単なる無駄ですので、定期的にログファイルを消してあげましょう。
定期的にログファイルを削除する方法
注) 以下の方法はMac限定です。
1. plistファイルを作成する
~/Library/LaunchAgents/me.rails.clean-log-files.plist
というファイルを以下のように作成します。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>me.rails.clean-log-files</string>
<key>Program</key>
<string>/bin/bash</string>
<key>ProgramArguments</key>
<array>
<string>-l</string>
<string>-c</string>
<!-- TODO Replace ~/projects with path to your projects directory -->
<string>find ~/projects -wholename '*/log/*.log' -print0 | xargs -0 rm</string>
</array>
<!-- Cleans development log files every day at 5 AM -->
<key>StartCalendarInterval</key>
<dict>
<key>Minute</key>
<integer>0</integer>
<key>Hour</key>
<integer>5</integer>
</dict>
</dict>
</plist>
ファイル名やLabelは好きな名前を付けて下さい。
<!-- ~/Library/LaunchAgents/me.rails.clean-log-files.plist -->
<key>Label</key>
<string>me.rails.clean-log-files</string>
対象の親ディレクトリは自分の開発環境に合わせて変更して下さい。
<!-- TODO Replace ~/projects with path to your projects directory -->
<string>find ~/projects -wholename '*/log/*.log' -print0 | xargs -0 rm</string>
ジョブを起動する時刻もお好みで変更して下さい。
<!-- Cleans development log files every day at 5 AM -->
<key>StartCalendarInterval</key>
<dict>
<key>Minute</key>
<integer>0</integer>
<key>Hour</key>
<integer>5</integer>
</dict>
2. ジョブをMacに登録する
以下のコマンドを実行してジョブを登録します。
$ launchctl load ~/Library/LaunchAgents/me.rails.clean-log-files.plist
念のため、ジョブが正常に登録されていることを確認します。
$ launchctl list | grep me.rails.clean-log-files
- 0 me.rails.clean-log-files
ジョブを停止する場合はunload
します。
$ launchctl unload ~/Library/LaunchAgents/me.rails.clean-log-files.plist
ジョブの起動時刻にMacを起動していなくてもOK!
cronとは異なり、ジョブの起動時刻にMacを起動していなくても大丈夫です。
起動時刻を過ぎていても、Macを立ち上げたタイミングでジョブが起動します。
これで毎日ローカル開発環境のログファイルが削除されます!
参考
この投稿は以下のブログ記事を参考にしています。