2010-06-05 14 views

Respuesta

37

Hay dos maneras de ir sobre él:

  • Asumiendo que su biblioteca es autónomo y tiene un módulo, se puede añadir un atributo logger a su módulo y el uso que en todas partes de su código de biblioteca.

    A continuación, o bien utilizar un inicializador en config/initializers/, o un bloque de config.after_initialize en config/environment.rb para inicializar el registrador, así:

    require 'mylibrary' 
    MyLibrary.logger = Rails.logger 
    

    Esto todavía podría permitir el uso de la biblioteca de auto-contenido de las escrituras fuera de Rails. Lo cual es bueno, en ocasiones.

  • Si usar su biblioteca sin rieles realmente no tiene ningún sentido, entonces también puede simplemente usar Rails.logger directamente.

En cualquier caso, se trata de un Ruby Logger estándar. También tenga en cuenta que, en teoría, el registrador puede ser nil.

+0

Gracias, esto es exactamente lo que estaba buscando. – drt

+3

NB: esta respuesta contiene información incorrecta y los editores no quieren que los solucione. A menos que (tal vez) esté usando Rails anterior a 2.0, NO "se trata de un Ruby Logger estándar". Rails ahora usa [ActiveSupport :: BufferedLogger] (http://apidock.com/rails/ActiveSupport/BufferedLogger). Si decide crear una instancia de un registrador separado para (por ejemplo) un trabajo cron que esté dentro de un proyecto de Rails, para evitar 'contaminar' el registro de Rails estándar. En este caso, asegúrese de usar 'ActiveSupport :: BufferedLogger.new' en lugar de' Logger.new'. Intenté eso y no funcionó. – Lambart

16

Podemos usar el registrador Rails directamente en lib, vea el siguiente fragmento.

require 'logger' 

Rails.logger.info "Hay..!!! Im in lib" 
Rails.logger.debug "Debugging this object from Lib #{object.inspect}" 
Rails.logger.error "This is an error..." 
+3

Esto funcionó para mí, finalmente, después de darme cuenta de que necesitaba . Es completamente obvio, una vez que lo sabes, pero no fue obvio para mí por un tiempo. –

Cuestiones relacionadas