2010-02-15 12 views
4

De l'Rails Guide le débogage, je trouve que je peux personnaliser la sortie à mes fichiers journaux à l'aide de cette méthode simple:numéro de la ligne de sortie dans Rails fichier journal

logger.debug "Person attributes hash: #{@person.attributes.inspect}" 

j'ai décidé Utilisez cette option pour suivre comment un changement de variables et passe par le contrôle de flux.

Je voudrais être en mesure de voir le numéro de ligne de mon code où la méthode logger#debug a été appelée. Quelque chose comme ceci:

logger.debug "Person attributes hash: #{@person.attributes.inspect} from line #{LINE_NUMBER_VAR}" 

Répondre

5
logger.debug "Person attributes hash: #{@person.attributes.inspect} from line #{__LINE__}" 
+0

Que voulez-vous dire par cette mise à jour? – user94154

+0

Voir ma première phrase. L'analyseur de messages de Stackoverflow ne montre pas deux traits de soulignement à la suite (les cache ou mange d'une autre manière, peut-être rend une partie du message entre les caractères de soulignement en gras). – DNNX

+1

ok super! Merci! Je ne savais pas que vous vouliez dire les analyseurs de SO. alors utilisez ceci: http://dpaste.com/159599/ – user94154

6

Utilisez un décorateur sur Logger:

class LoggerDecorator 
    def initialize(logger) 
    @logger = logger 
    end 

    %w{debug info warn error fatal}.each do |method| 
    eval(<<-eomethod) 
     def #{method}(msg) 
     @logger.#{method}(position) {msg} 
     end 
    eomethod 
    end 

    private 
    def position 
    caller.at(1).sub(%r{.*/},'').sub(%r{:in\s.*},'') 
    end 
end