Frage

Von den Rails-Führern auf Debuggen, fand ich, dass ich Ausgabe auf meine Log-Dateien anpassen kann mit dieser einfachen Methode:

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

habe ich beschlossen, diese verwenden, wie eine Variable Änderungen zu verfolgen und geht durch Flusssteuerung.

Ich möchte in der Lage sein, die Zeilennummer meines Codes zu sehen, wo logger#debug Methode aufgerufen wurde. So etwas wie folgt aus:

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

Lösung

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

Andere Tipps

Verwenden Sie einen Dekorateur auf 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

Ab Rails 5 wird diese nun gebacken in über:

ActiveRecord::Base.verbose_query_logs = true

Siehe die Dokumentation für mehr

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top