8

Meine Schienen Logger Konfiguration zur Zeit meldet die aktuelle Uhrzeit und UUID, wie folgt aus:Wie kann ich die Protokollebene einer Nachricht protokollieren?

config.logger = ActiveSupport::TaggedLogging.new(Logger.new("#{Rails.root}/log/#{ENV['RAILS_ENV']}.log", 'daily')) 
config.log_tags = [Proc.new {Time.now.strftime('%Y-%m-%d %H:%M:%S.%L')}, :uuid] 

Gibt es eine Möglichkeit auch die aktuelle Meldung der Protokollebene anmelden?

d. H., Wenn ich logger.debug aufruft, wird das Tag [DEBUG] zur Nachricht hinzugefügt.

Antwort

8

Railscasts zeigt, wie der Logger zur Ausgabe durch die Schwere der Log-Nachricht zu überschreiben, die SimpleFormatter # Aufruf Methode überschrieben:

class Logger::SimpleFormatter 
    def call(severity, time, progname, msg) 
    "[#{severity}] #{msg}\n" 
    end 
end 

Siehe http://railscasts.com/episodes/56-the-logger-revised für die Details.

-4

Ich habe MyApp :: Application.config.log_level zu den Log-Tags hinzugefügt und es funktionierte für mich.

config.log_tags = [Proc.new {Time.now.strftime('%Y-%m-%d %H:%M:%S.%L')}, :uuid, Proc.new {MyApp::Application.config.log_level}] 
+6

Soweit ich verstehe, ist dies die minimale Log-Ebene für die Anwendung definiert, nicht die Log-Level der einzelnen Nachricht. – Ovesh