Beispiele und Hinweise zur Nutzung von logger


Sie sind hier: RubyLoggerlogger


Übersicht

Mehrfache Ausgabe
Mehrfache Ausgabe mit unterschiedlichem Level
Eigene Level möglich
Abfrage auf Level möglich?
Format definierbar
Tracing möglich? ?
Verhalten bei Logfiles overwrite, append
URL des Rubyforge-Projekts Standard

Ausgabeziele:

Vorhandene Level:

Weitere Möglichkeiten:

Coding-Beispiele

Beispiel 1: Logger auf STDOUT

require 'logger' 

log = Logger.new(STDOUT)
log.level = Logger::WARN
log.progname  = 'Test for Logger'

log.debug("just a debug message") 
log.info("important information") 
log.warn("you better be prepared") 
log.error("now you are in trouble") 
log.fatal("this is the end...")
log.close

Ausgabe des Loggers

    W, [2008-04-05T22:38:43.937000 #5888]  WARN -- Test for Logger: you better be prepared
    E, [2008-04-05T22:38:43.937000 #5888] ERROR -- Test for Logger: now you are in trouble
    F, [2008-04-05T22:38:43.937000 #5888] FATAL -- Test for Logger: this is the end...

Beispiel 2: Logger in Datei

require 'logger' 

log = Logger.new('test2_logger.log')
log.level = Logger::INFO
log.progname  = 'Test for Logger'

log.debug("just a debug message") 
log.info("important information") 
log.warn("you better be prepared") 
log.error("now you are in trouble") 
log.fatal("this is the end...")
log.close

Ausgabe des Loggers log_warn (File)

# Logfile created on Sat Apr 05 22:40:44 +0200 2008 by /
I, [2008-04-05T22:40:55.906000 #5404]  INFO -- Test for Logger: important information
W, [2008-04-05T22:40:55.906000 #5404]  WARN -- Test for Logger: you better be prepared
E, [2008-04-05T22:40:55.906000 #5404] ERROR -- Test for Logger: now you are in trouble
F, [2008-04-05T22:40:55.906000 #5404] FATAL -- Test for Logger: this is the end...
I, [2008-04-05T22:42:11.296000 #1364]  INFO -- Test for Logger: important information
W, [2008-04-05T22:42:11.296000 #1364]  WARN -- Test for Logger: you better be prepared
E, [2008-04-05T22:42:11.296000 #1364] ERROR -- Test for Logger: now you are in trouble
F, [2008-04-05T22:42:11.296000 #1364] FATAL -- Test for Logger: this is the end...
I, [2008-04-05T22:42:49.046000 #4244]  INFO -- Test for Logger: important information
W, [2008-04-05T22:42:49.046000 #4244]  WARN -- Test for Logger: you better be prepared
E, [2008-04-05T22:42:49.046000 #4244] ERROR -- Test for Logger: now you are in trouble
F, [2008-04-05T22:42:49.046000 #4244] FATAL -- Test for Logger: this is the end...
I, [2008-04-07T12:59:57.372000 #2736]  INFO -- Test for Logger: important information
W, [2008-04-07T12:59:57.388000 #2736]  WARN -- Test for Logger: you better be prepared
E, [2008-04-07T12:59:57.388000 #2736] ERROR -- Test for Logger: now you are in trouble
F, [2008-04-07T12:59:57.388000 #2736] FATAL -- Test for Logger: this is the end...
I, [2008-04-07T13:00:06.310000 #5968]  INFO -- Test for Logger: important information
W, [2008-04-07T13:00:06.310000 #5968]  WARN -- Test for Logger: you better be prepared
E, [2008-04-07T13:00:06.310000 #5968] ERROR -- Test for Logger: now you are in trouble
F, [2008-04-07T13:00:06.310000 #5968] FATAL -- Test for Logger: this is the end...
I, [2008-04-07T13:01:36.391000 #5056]  INFO -- Test for Logger: important information
W, [2008-04-07T13:01:36.391000 #5056]  WARN -- Test for Logger: you better be prepared
E, [2008-04-07T13:01:36.391000 #5056] ERROR -- Test for Logger: now you are in trouble
F, [2008-04-07T13:01:36.391000 #5056] FATAL -- Test for Logger: this is the end...

Beispiel 3: Logger mit levelprüfung

require 'logger' 

log = Logger.new('test2_logger.log')
log.level = Logger::INFO
log.progname  = 'Test for Logger'

log.debug("just a debug message") if log.debug?
log.info("important information") if log.info?
log.warn("you better be prepared") if log.warn?
log.error("now you are in trouble") if log.error?
log.fatal("this is the end...") if log.fatal?
log.close

Die Ausgabe des Loggers erfordert evtl. viel Aufwand (=Rechenzeit). Man denke blos an komplexe Strukturen, die im Logger protokolliert werden sollen.

Zur Einsparung von Laufzeit bietet es sich an, den Logger nur dann zu rufen, wenn das entsprechende Level überhauot verwendet wird.

Weitere Möglichkeiten