Tôi tình cờ biết rằng tệp nhật ký ray của tôi3.1 là siêu lớn, khoảng 21mb. Đây có phải là kích thước bình thường không? Tệp nhật ký nào muốn trong môi trường sản xuất? Bên cạnh đó, tôi có thể xóa nhật ký không? Cảm ơnKích thước tệp nhật ký Ruby trên đường ray quá lớn
Trả lời
bạn chỉ có thể xóa tệp!
Đường ray sẽ tạo nhật ký mới nếu nhật ký không tồn tại.
Rõ ràng là lưu/sao lưu tệp nếu nó quan trọng, nhưng thường thì không.
Bạn cũng có thể nén tệp đã sao lưu (và sau đó xóa nguồn) nếu bạn muốn giữ nó trên cùng một ổ đĩa nhưng vẫn tiết kiệm dung lượng.
Để tự động xoay các file log (giải pháp lâu dài tốt nhất) log sử dụng luân phiên như đã mô tả ở đây:
Ruby on Rails production log rotation
sau đó bạn có thể đặt nó và quên nó!
Để thực sự thay đổi những gì được see đăng nhập:
http://dennisreimann.de/blog/silencing-the-rails-log-on-a-per-action-basis/
Bạn có thể muốn sử dụng logrotate
. Hãy xem câu trả lời cho câu hỏi này: Ruby on Rails production log rotation.
Thư mục log
của ứng dụng Rails của bạn chứa ba tệp nhật ký tương ứng với từng môi trường chuẩn. Các tệp nhật ký có thể phát triển rất lớn theo thời gian. A rake task
được cung cấp để cho phép xóa dễ dàng các tệp nhật ký.
rake log:clear
# Truncates all *.log files in log/ to zero bytes
# Specify which logs with LOGS=test,development,production
Anwser này đã được chấp nhận. Khi triển khai hành khách, khi bạn xóa tệp nhật ký, đường ray không tạo tệp nhật ký mới. – EGurelli
According to the documentation, nếu bạn muốn giới hạn kích thước của thư mục nhật ký, đặt điều này trong 'development.rb'-file của bạn:
config.logger = ActiveSupport::Logger.new(config.paths['log'].first, 1, 50 * 1024 * 1024)
Với điều này, các file log của bạn sẽ không bao giờ lớn hơn 50Mb. Bạn có thể thay đổi kích thước theo sở thích của riêng bạn. Chữ ‘1’ trong tham số thứ hai có nghĩa là 1 tệp nhật ký lịch sử sẽ được giữ lại, vì vậy bạn sẽ có tối đa 100Mb nhật ký - nhật ký hiện tại và đoạn trước đó là 50Mb.
Vâng, Bạn có thể sử dụng cú pháp như thế này:
config.logger = ActiveSupport::Logger.new(config.log_file, num_of_file_to_keep, num_of_MB*1024*1024)
Ví dụ:
config.logger = ActiveSupport::Logger.new(config.log_file, 2, 20*1024*1024)
Nó không chỉ sử dụng cho Rails đăng nhập, bạn có thể sử dụng tập tin đăng nhập của bất kỳ dịch vụ chạy với đường ray, chẳng hạn như: rpush log, ...
config.logger = ActiveSupport::Logger.new(nil)
thực hiện thủ thuật và hoàn toàn vô hiệu hóa việc ghi nhật ký vào một tệp (đầu ra của bàn điều khiển được giữ nguyên).
tôi tự động xóa các bản ghi trong phát triển trên mỗi đầu máy chủ với config/initializers/clear_development_log.rb
:
if Rails.env.development?
`rake log:clear`
end
Một thỏa hiệp hợp lý trên một initializer:
Rake::Task['log:clear'].invoke if Rails.env.development? || Rails.env.test?
Tôi có nghĩa là nếu nó có thể là đường ray không tạo một tệp nhật ký. – Jason
Tôi không biết liệu điều đó có thể dễ dàng thực hiện hay không. Có thể bí danh nó thành dev/null? Không, tốt hơn để sử dụng xoay và vì vậy tôi đã thêm vào đó. –
hiểu điều đó, cảm ơn. – Jason