Railsでログローテートをするには

Railsだと、簡単にログファイルのローテーションができます。

logrotateなど別の手段もあるのですが、常弱君には難しかったので、RailsのLogger.new()を使います。笑

 

config/envronment.rbやconfig/environments下の各環境の設定ファイルに、以下の1行を追加するだけです。

config.logger = Logger.new('/var/log/app/production.log', 10, 10.megabytes)

 

第一引数では、ログファイルを置きたい場所を指定します。

デフォルトのlogディレクトリでよければ、"#{Rails.root}/log/#{Rails.env}.log"と指定しておきます。

 

第二引数では、残したいログファイルの数を指定します。

上の例では、10ファイルまで残しておく指定をしています。

 

そして、ログが第三引数で指定したサイズを超えるごとに、ローテーションをしてくれて、10ファイルより多くなると、古いものから順に削除していってくれます。

 

また、以下のように記述することもできます。

config.logger = Logger.new('/var/log/app/production.log', 'weekly')

 

第一引数は同じくログファイルを置きたい場所を指定、第二引数に'daily'や'monthly'を指定すると、その期間ごとにローテーションをしてくれます。