Ausgabezeilennummer in Rails Protokolldatei
-
20-09-2019 - |
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}"
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