2009-10-28 9 views
6

¿Hay alguna forma de deshabilitar los registros de SQL en Rails, aparte de cambiar el nivel de registro? Tengo algunas declaraciones logger.debug que me gustaría imprimir en mis modelos ActiveRecord, pero quiero ocultar las declaraciones SQL.¿Cómo deshabilitar los registros de Rails SQL?

Respuesta

4

Puede Moneky-parche, poner esto en un archivo tal como config/initializers/disable_ar_logging.rb:

class ActiveRecord::ConnectionAdapters::AbstractAdapter 
    def log_info(*args); end 
end 
1

Dan,

Es esto en el modo de producción o desarrollo? Si se trata de la modalidad de desarrollo esto es por lo general lo que hago:

logger.info("DEBUG my message here") 
logger.info("DEBUG #{my_object.inspect}") 

tail -f log/development | grep DEBUG 
+0

Esto no es útil, no deshabilita en absoluto el registro. –

1

Esto es lo que funcionó para mí en Rails 3.0.5:

class ActiveRecord::ConnectionAdapters::AbstractAdapter 
    def log(sql, name) 
     name ||= "SQL" 
     yield 
    rescue Exception => e 
     message = "#{e.class.name}: #{e.message}: #{sql}" 
     @logger.debug message if @logger 
     raise translate_exception(e, message) 
    end 
    end 

Es this method con la línea que escribe en el registro eliminado. Los hits de caché de SQL todavía se muestran en el registro y no he descubierto cómo desactivarlos.

Cuestiones relacionadas