如何在rails上的ruby中設置test.log和development.log的自動清理?Ruby on Rails中的日誌輪換/清除
是否有一個設置來自動刪除在服務器啓動和測試運行的開發和測試日誌?
如何在rails上的ruby中設置test.log和development.log的自動清理?Ruby on Rails中的日誌輪換/清除
是否有一個設置來自動刪除在服務器啓動和測試運行的開發和測試日誌?
的ruby logger是手頭上幫助你在這裏 - 它爲默認選項迴轉。
這是我做的:
在environment.rb
我們定義自己的記錄
new_logger = Logger.new(File.join(RAILS_ROOT, "log", "new_logger_#{RAILS_ENV}.log"), 'daily')
new_logger.formatter = Logger::Formatter.new
這將創建我們自己的伐木工......有格式(所以你得到的時間戳等),每一個環境,並每天輪換。
然後在初始化塊,我們要求的Rails使用這個記錄器
Rails::Initializer.run do |config|
config.active_record.logger = new_logger
config.action_controller.logger = new_logger
#snip
end
可以很明顯的看到電源這裏也有不同的採伐爲active_record
和action_controller
- 有時用處很大!
注意:在Rails 3中,你的「initalisation block」是在development.rb,production.rb等中。 – bcoughlan 2011-03-11 01:31:24
在本教程中看到這裏:Rotating Rails Log Files,我不知道它是否可以解決您的問題,因爲我不關心我的日誌文件。
Hpe我幫你!
不幸的logrotate只適用於類Unix系統 – 2009-07-20 16:46:52
是一個rake任務,它將與log/*.log
匹配的所有文件截斷爲零字節。 你可以在服務器啓動時調用它並運行測試任務。
所有腳本/服務器,是一個Ruby腳本,我確定你可以修改它做一些事情,如:
#!/usr/bin/env ruby
require 'fileutils'
FileUtils.rm File.join(File.dirname(__FILE__), log, *.log)
require File.dirname(__FILE__) + '/../config/boot'
require 'commands/server'
在生產環境中,您確實需要SyslogLogger(http://rails-analyzer.rubyforge.org/tools/files/lib/analyzer_tools/syslog_logger_rb.html),它允許您在syslogd中寫入哪個creansup,以分佈式設置方式輪換文件。
經過試驗後,我發現Rails初始值設定項被加載到正確的位置,您可以使用標準的Ruby File
類截斷文件。我有這個在配置/初始化/ truncate_logs_on_server_start.rb:
if MyRailsApp::Application.config.truncate_logs_on_server_start
# Making an assumption here that we're logging to a file...
File.open("log/#{ENV["RAILS_ENV"]}.log", "w") do |log_file|
log_file.puts("Initializer truncate_logs_on_server_start reset the log file")
log_file.puts
end
end
你只需要再設置MyRailsApp::Application.config.truncate_logs_on_server_start
在application.rb中和各種環境。
你是什麼意思的「清理」? – cakeforcerberus 2009-07-20 16:30:53