2012-08-16 10 views
23

¿Cómo puedo evitar que Rails se registre demasiado? Aquí hay un rastro típico en mi archivo production.log, muchos parciales, éxitos de caché ... Es útil en el desarrollo, pero no lo quiero en mi entorno de producción.Rieles de registro demasiado prolijo

Started GET "/?redirected=true" for 46.193.131.53 at 2012-08-16 18:39:20 +0200 
Processing by HomeController#index as HTML 
    Parameters: {"redirected"=>"true"} 
    Rendered application/_successfully_connected.html.haml (0.8ms) 
    Rendered hotspot_infos/_infos.html.haml (0.4ms) 
    Rendered application/_hotspot_infos.html.haml (1.8ms) 
    Rendered application/_news.html.haml (0.3ms) 
Read fragment views/social-zone-341-directory (0.5ms) 
    Rendered application/_directory.html.haml (2.5ms) 
    Rendered application/_meteo.html.haml (1.1ms) 
    Rendered application/_notifications.html.haml (0.8ms) 
    Rendered application/_like_button.html.haml (0.3ms) 
    Rendered application/_navbar.html.haml (4.2ms) 
    Rendered application/_connection.html.haml (0.5ms) 
    Rendered application/_gallery.html.haml (0.2ms) 
    Rendered application/_search_bar.html.haml (0.4ms) 
    Rendered pictures/_picture_frame.html.haml (0.3ms) 
    Rendered application/_profile_preview.html.haml (1.4ms) 
    Rendered application/_profile_block.html.haml (1.7ms) 
    Rendered application/_menus.html.haml (3.3ms) 
    Rendered application/_left_pane.html.haml (5.5ms) 
    Rendered application/_langs.html.haml (0.8ms) 
    Rendered application/_footer.html.haml (1.9ms) 
    Rendered application/_flash_modal.html.haml (0.1ms) 
    Rendered application/_connection_required.js.erb (0.2ms) 
Completed 200 OK in 159ms (Views: 25.5ms | ActiveRecord: 88.0ms) 

Gracias por su ayuda de

PS: Estoy usando Rails 3.2.6

+1

uso ** [Lograge] (https://github.com/roidrage/lograge) **, mejor joya que he encontrado para limpiar el registro de Rails – Yarin

Respuesta

30

En Rails 4 habrá un ajuste para limpiar registros:

config.action_view.logger = nil 

para lograr que en Rails 3, usted tiene que ActionView parche mono:

module ActionView 
    class LogSubscriber < ActiveSupport::LogSubscriber 
    def logger 
     @memoized_logger ||= Logger.new('/dev/null') 
    end 
    end 
end 
+7

FWIW, este parche de mono aparentemente causa un archivo manejado fuga (al menos con Rails 3.2.12). Recomiendo reemplazar 'Logger.new ('/ dev/null')' con '@memoized_logger || = Logger.new ('/ dev/null')'. Amarga voz de experiencia aquí. :) – bheeshmar

+1

Gracias por el informe. Edité mi respuesta. – sailor

+1

Para mantener habilitado el registro de parciales cuando se depura el nivel de registro, puede usar '@memoized_logger || = Rails.logger.debug? ? super: Logger.new ('/ dev/null') ' – robd

6

Es necesario configurar su config.log_level diferente. Obtenga información sobre Log Levels.

Por ejemplo, añada lo siguiente a config/evironments/production.rb

config.log_level = :warn 

suyo es probable establece en :debug o :info.

+5

El problema es cuando el nivel de registro está configurado para advertir, no obtengo nada en absoluto en mi archivo de registro. Quiero que la información básica se registre como "Procesando por HomeController # index como HTML" o "Completada 200 OK en 369ms (Vistas: 272.3ms | ActiveRecord: 8.1ms)" – sailor

3

pongo esto en mi inicializadores a monkeypatch cierta registro para ir a depurar en lugar de información:

module ActionView 
    class LogSubscriber 
    def render_template(event) 
     message = "Rendered #{from_rails_root(event.payload[:identifier])}" 
     message << " within #{from_rails_root(event.payload[:layout])}" if event.payload[:layout] 
     message << " (#{event.duration.round(1)}ms)" 
     debug(message) 
    end 
    alias :render_partial :render_template 
    alias :render_collection :render_template 
    end 
end 

module ActionController 
    class LogSubscriber 
    # Use debug logging for read_fragment 
    # %w(write_fragment read_fragment exist_fragment? expire_fragment expire_page write_page).each do |method| 
    %w(read_fragment).each do |method| 
     class_eval <<-METHOD, __FILE__, __LINE__ + 1 
     def #{method}(event) 
      return unless logger.info? 
      key_or_path = event.payload[:key] || event.payload[:path] 
      human_name = #{method.to_s.humanize.inspect} 
      debug("\#{human_name} \#{key_or_path} (\#{event.duration.round(1)}ms)") 
     end 
     METHOD 
    end 
    end 
end 
Cuestiones relacionadas