รหัส
สำหรับทางรถไฟ 4 และใหม่กว่าคุณสามารถใช้Logger ออกอากาศ
หากคุณต้องการรับทั้ง STDOUT และการบันทึกไฟล์สำหรับงานคราดในโหมดการพัฒนาคุณสามารถเพิ่มรหัสนี้ในconfig/environments/development.rb:
  if File.basename($0) == 'rake'
    # http://stackoverflow.com/questions/2246141/puts-vs-logger-in-rails-rake-tasks
    log_file     = Rails.root.join("log", "#{Rails.env}.log")
    Rails.logger = ActiveSupport::Logger.new(log_file)
    Rails.logger.extend(ActiveSupport::Logger.broadcast(ActiveSupport::Logger.new(STDOUT)))
  end
ทดสอบ
นี่เป็นงาน Rake ขนาดเล็กเพื่อทดสอบโค้ดด้านบน:
# lib/tasks/stdout_and_log.rake
namespace :stdout_and_log do
  desc "Test if Rails.logger outputs to STDOUT and log file"
  task :test => :environment do
    puts "HELLO FROM PUTS"
    Rails.logger.info "HELLO FROM LOGGER"
  end
end
กำลังรันrake stdout_and_log:testเอาต์พุต
HELLO FROM PUTS
HELLO FROM LOGGER
ในขณะที่
HELLO FROM LOGGER
log/development.logได้รับการเพิ่ม
กำลังรันrake stdout_and_log:test RAILS_ENV=productionเอาต์พุต
HELLO FROM PUTS
ในขณะที่
HELLO FROM LOGGER
log/production.logได้รับการเพิ่ม
               
              
Rails.logger = Logger.new(STDOUT)development.rb จะไม่ง่ายกว่าเหรอ