2010-05-18 10 views
6

Sto provando a scrivere sui miei file di registro durante l'esecuzione di un'attività rake. Funziona bene in modalità sviluppo, ma non appena passo all'ambiente di produzione, non viene scritto nulla nei file di registro.Rails: come scrivere in un file di registro personalizzato da un'attività rake in modalità produzione?

ho letto qui

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

che questo è il comportamento normale e anche trovato un biglietto #wontfix nel faro.

La mia domanda: c'è un modo per produrre, cosa succede mentre il mio rake è in esecuzione? Esegue alcune operazioni di scansione e viene eseguito per ore. Io preferirei se l'uscita è andato in un file di log specifico come /log/crawler.log

In questo momento sto solo usando questo comando per scrivere i file di log:

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

Grazie!

+0

ho eseguito i miei compiti rake in modalità di produzione in uno scenario simile. –

risposta

13

Il problema che si verifica è che i binari ignorano i registri di livello "Informazioni" in modalità di produzione.

mi consiglia la lettura di questo: http://www.ruby-doc.org/stdlib/libdoc/logger/rdoc/classes/Logger.html

e creando il proprio logger:

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

Ho seguito questo approccio. Funziona in ambiente di sviluppo e di staging. Ma l'accesso a logfile.log non sta accadendo nell'ambiente di produzione. log_level di entrambi gli ambienti di staging e produzione è 1 - Logger :: INFO – Anand

2

si può fare un nuovo logger con Logger.new ("file.log") e quindi chiamare è metodi come questo

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

Forse è necessario scrivere il buffer dove serve:

logger.flush 

o si può attivare Auto risciacquo:

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