2012-07-07 10 views
5

Sto tentando di disabilitare la registrazione della cache nella produzione. Sono riusciti a far sì che SQL interrompesse la registrazione delle query, ma senza fortuna con le voci del registro di cache. Esempio di linea in registro di produzione:Come disabilitare la registrazione della cache activerecord nelle guide

CACHE (0.0ms) SELECT `merchants`.* FROM `merchants` WHERE `merchants`.`id` = 1 LIMIT 1 

Non voglio per disabilitare tutte le registrazioni, perché voglio dichiarazioni logger.debug di presentarsi nel registro di produzione. Utilizzo di rails 3.2.1 con Mysql e Apache. Qualche suggerimento?

+1

vorrei sapere come fare la stessa cosa usando le rotaie 2.3.5 – Joelio

risposta

-1

Ci sono alcune domande (this, this, this) come questo su SO tutte con un tema simile. Si potrebbe provare a mettere questo in un file di inizializzazione:

old_logger = ActiveRecord::Base.logger 
ActiveRecord::Base.logger = nil 

Restore logger:

ActiveRecord::Base.logger = old_logger; nil # nil just to suppress some garbage 
+4

Come è la vostra risposta commenti su 'CACHE (0,0 ms)' voci -come? – jdoe

2

io a tacere il registro cache utilizzando il metodo suggerito dal palo link sottostante.

Ho sostituito il logger di ActiveRecod predefinito con un wrapper che elimina i messaggi contenenti testi indesiderati, ad esempio "CACHE".

In primo luogo, creare un file all'interno config/initializers ad esempio active_record.rb e all'interno del file definire una classe wrapper e sostituire il record logger attiva come nel codice qui sotto:

# Implementation of logger that ignores messages containing forbidden words 
# here “CACHE” and "Settings Load" 
class CacheFreeLogger < ActiveSupport::TaggedLogging 

    @@excluded = ['Settings Load','CACHE'] 

    def add(severity, message = nil, progname = nil, &block) 
    if message.nil? 
     if block_given? 
     message = block.call 
     else 
     message = progname 
     progname = nil #No instance variable for this like Logger 
     end 
    end 
    if severity > Logger::DEBUG || !(@@excluded.map{|e| message.include? e}.include?(true)) 
     @logger.add(severity, "#{tags_text}#{message}", progname) 
    end 
    end 
end 

#Replace the existing logger with the filtering one 
ActiveRecord::Base.logger = CacheFreeLogger.new(ActiveRecord::Base.logger) if Rails.env.development? 

Il post originale esteso Logger non TaggedLoggin ma Non ha funzionato per me.

Questo metodo è stato suggerito nel blog: http://heliom.ca/blog/posts/disable-rails-cache-logging

+0

questo non funziona con le rotaie 5 –

Problemi correlati