2010-05-18 12 views
6

Bir komisyon görevini çalıştırırken günlük dosyalarına yazmaya çalışıyorum. Geliştirme modunda iyi çalışıyor, ancak üretim ortamına geçtiğimde, günlük dosyalarına hiçbir şey yazılmıyor.Raylar: Üretim modunda bir komisyon görevi içinden özel bir günlük dosyasına nasıl yazılır?

Bu normal bir durumdur ve aynı zamanda deniz feneri bir #wontfix bilet bulduğunu

How do I use a custom log for my rake tasks in Ruby on Rails?

burada okuyun.

Soruma Soru: Çıktı almanın bir yolu var mı, komisyon görevim çalışırken ne oluyor? Bazı taramalar yapar ve saatlerce çalışır. çıkış

/log/crawler.log

gibi belirli bir günlük dosyasında gitti ben şu anda sadece günlük dosyaları yazmak için bu komutu kullanıyorum tercih ediyorum:

ActiveRecord::Base.logger.info "Log Text" 

Teşekkür!

+0

benzer bir senaryo. –

cevap

13

Yapmakta olduğunuz sorun, rayların üretim modunda 'bilgi' düzeyi günlüklerini yoksayar.

Bunu okumanızı tavsiye ediyorum: http://www.ruby-doc.org/stdlib/libdoc/logger/rdoc/classes/Logger.html

ve kendi logger oluşturarak:

logger = Logger.new('logfile.log') 
logger.info "Something happened" 
+0

Bu yaklaşımı kullandım. Gelişim ve evreleme ortamında çalışıyor. Ancak üretim ortamında logfile.log dosyasına kayıt olmuyor. evreleme ve üretim ortamlarının log_level'i 1 - Logger :: INFO – Anand

2

Sen Logger.new ("file.log") ile yeni bir logger yapmak ve sonra bu kadar çağırabilir bunun gibi yöntemler.

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 
2

Belki ihtiyacınız tampon yazmak gerekir:

logger.flush 

veya otomatik sifonu açabilirsiniz: I ÜRETİM modunda benim tırmık görevleri çalıştırmak

task :foo => :environment do 
    Rails.logger.auto_flushing = 1 
    Rails.logger.info "bar" 
end