Gần đây chúng tôi đã phải giải quyết vấn đề này và nhận ra rằng logrotate là không phải là giải pháp tốt nhất. Sử dụng nó đòi hỏi bạn phải khởi động lại ứng dụng đường ray mỗi khi các bản ghi được xoay, mà có vẻ như một hit hiệu suất không cần thiết.
Giải pháp tốt hơn là ghi đè trình ghi nhật ký đường ray mặc định trong (các) tệp cấu hình của ứng dụng.
# in config/environments/development.rb
config.logger = Logger.new("#{Rails.env}.log", "daily")
và sau đó sử dụng tập lệnh làm sạch tệp cũ hơn n ngày. Bạn có thể sử dụng logrotate cho phần này nếu bạn muốn.Chúng tôi sử dụng một nhiệm vụ cào như,
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
Nguồn
2014-03-24 16:52:28
Có thể trùng lặp [Xoay vòng bản ghi sản xuất Ruby on Rails] (http://stackoverflow.com/questions/4883891/ruby-on-rails-production-log-rotation) – tirdadc