我正在尝试在运行rake任务时写入我的日志文件。 它在开发模式下工作正常,但是一旦切换到生产环境,就不会向日志文件写入任何内容。
我在这里读到
如何在Ruby on Rails中为自己的rake任务使用自定义日志?
这是正常的行为,并在灯塔中找到了#wontfix票。
我的问题:有没有办法输出,在我的rake任务运行时发生了什么? 它执行一些爬行并运行数小时。 我希望输出进入特定的日志文件,如/log/crawler.log
现在我只是用这个命令写入日志文件:
ActiveRecord::Base.logger.info "Log Text"
谢谢!
您遇到的问题是rails忽略了生产模式中的“信息”级别日志。
我建议阅读: http : //www.ruby-doc.org/stdlib/libdoc/logger/rdoc/classes/Logger.html
并创建自己的记录器:
logger = Logger.new('logfile.log')
logger.info "Something happened"
您可以使用Logger.new(“file.log”)创建一个新的记录器,然后调用它的方法。
task :import_stuff => :environment do
require 'csv'
l = Logger.new("stuff.log")
csv_file = "#{RAILS_ROOT}/stuff.csv"
CSV.open(csv_file, 'r') do |row|
l.info row[1]
end
end
也许您需要在需要的地方写出缓冲区:
logger.flush
或者你可以打开自动刷新:
task :foo => :environment do
Rails.logger.auto_flushing = 1
Rails.logger.info "bar"
end