2012-07-07 11 views
5

Estoy tratando de deshabilitar el registro de almacenamiento en caché en la producción. Han logrado que SQL detenga el registro de consultas, pero no hubo suerte con las entradas de registro en caché. Ejemplo de línea en el registro de producción:Cómo deshabilitar el registro de la memoria caché activerecord en los rieles

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

no quiero desactivar todos los registros, ya que quiero declaraciones logger.debug en aparecer en el registro de producción. Usando rieles 3.2.1 con Mysql y Apache. ¿Alguna sugerencia?

+1

me gustaría saber cómo hacer lo mismo usando los carriles 2.3.5 – Joelio

Respuesta

-1

Hay algunas preguntas (this, this, this) como esta en SO, todas con un tema similar. Se podría intentar poner esto en un fichero de inicialización:

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

Restaurar registrador:

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

¿Cómo está su respuesta relacionada con 'cache (0.0ms)' entradas -como? – jdoe

2

que silenciaron el registro de caché mediante el método sugerido por el puesto vinculado a continuación.

He sustituido el registrador ActiveRecod predeterminado por un contenedor que filtra los mensajes que contienen mensajes no deseados, es decir, 'CACHE'.

En primer lugar, crear un archivo dentro de config/initializers por ejemplo active_record.rb y dentro del archivo de definir una clase de contenedor y vuelva a colocar el registrador de registro activo como en el siguiente código:

# 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? 

El post original se extendía Logger no TaggedLoggin pero no funcionó para mí

Este método se sugirió en el blog: http://heliom.ca/blog/posts/disable-rails-cache-logging

+0

esto no funciona con rieles 5 –

Cuestiones relacionadas