Wir hatten vor kurzem mit diesem Problem zu tun und haben festgestellt, dass logrotate no die beste Lösung. Die Verwendung erfordert, dass Sie die Rails-App jedes Mal neu starten, wenn Protokolle rotiert werden, was ein unnötiger Leistungsverlust zu sein scheint.
Eine bessere Lösung ist es, den Standard-Rails-Logger in den Konfigurationsdateien Ihrer Anwendung zu überschreiben.
# in config/environments/development.rb
config.logger = Logger.new("#{Rails.env}.log", "daily")
und verwenden Sie dann ein Skript, das Dateien bereinigt, die älter als n Tage sind. Sie können logrotate für diesen Teil verwenden, wenn Sie möchten. Wir verwenden eine Rake-Aufgabe wie,
desc "Cleanup application logs older than 30 days"
task :logs => :environment do
require 'fileutils'
Dir.glob("#{Rails.root}/log/*.log.*").
select{|f| File.mtime(f) < (Time.now - (60*60*24*30)) }. # older than 30 days
each { |f|
puts "Removing #{f}"
FileUtils.rm f
}
end