Auf der Suche nach einer Logging-Möglichkeit für ein Programm fand ich zwar mehrere Logger für Ruby, aber leider keinen Vergleich. Dieser Vergleich sollte nicht als endgültige Wahrheit genommen werden, keiner der Logger wurde in das letzte Detail geprüft.
Da sich relativ schnell ein Favorit herauskristallisierte (log4r) wurde der Vergleich nicht komplett durchgezogen und evtl. wurden Features einzelner Logger übersehen. Sollte jemand Korrekturen und zusätzliche Anmerkungen haben: Einfach eine Infomail senden.
Meine Anforderungen an einen Logger sind:
- Verschiedene Level (Error, Warning, Info, Debugging) → erfüllen eigentlich alle
-
Der Logger soll gleichzeitig ausgeben:
- Error auf Stdout
- Sonstige Meldungen in eine Datei (wahlweise level bestimmbar)
- Die Logging-Information soll anzeigen, wo im Programm die Meldung erzeugt wurde. → Trace-Funktion
Hinweise zum Logging
Das Logging sollte nicht übertrieben werden, da es zwar im Fehlerfall die Analyse erleichtert, aber im Normalfall unnötige Systemlast erzeugt.
Insbesonders sollten für den Log-Text keine umfangreichen Codeauswertungen stattfinden. Alternativ kann man abprüfen ob der Loglevel überhaupt ausgewertet wird.
log.debug( komplexe_aktion ) if log.debug?
Vergleich verschiedener Logger
Kriterium | log4r | logger | logging | logsimple |
Mehrfache Ausgabe | √ | ∅ | √ | Je Nachrichtentyp |
Mehrfache Ausgabe mit unterschiedlichem Level | √ | ∅ | ∅ | ? |
Eigene Level möglich | √ | ∅ | ? | √ |
Abfrage auf Level möglich? | √ | √ | ? | ? |
Format definierbar | √ | √ | ? | ? |
Tracing möglich? | √ | ? | ? | ? |
Verhalten bei Logfiles | overwrite | overwrite, append | append | ? |
URL des Rubyforge-Projekts | log4r | Standard | logging | logsimple |
Informationen zu den einzelnen Loggern
log4r
Rubyforge: http://rubyforge.org/projects/log4r/
Log4r - Log4r is a comprehensive and flexible logging library for use in Ruby programs. It features a heirarchical logging system of any number of levels, custom level names, multiple output destinations per log event, custom formatting, and more.
Weitere Weblinks:
⇒ Details und Verwendungsbeispiel(e): log4r
logger
Rubyforge: Standard
⇒ Details und Verwendungsbeispiel(e):
logger
logging
Rubyforge: http://rubyforge.org/projects/logging/
Logging - Logging is a flexible logging library for use in Ruby programs based on the design of Java's log4j library. It features a hierarchical logging system, custom level names, multiple output destinations per log event, custom formatting, and more.
Benötigt:
- flexmock
⇒ Details und Verwendungsbeispiel(e): logging
logsimple
Rubyforge: http://rubyforge.org/projects/logsimple/
LogSimple - LogSimple is a simple Loggin library for Ruby ; it allows to define log levels, outputers and formaters. Messages are formated/routed depending on the level, rather than the logger.
Weitere Weblinks:
Benötigt:
- syslock
⇒ Details und Verwendungsbeispiel(e): logsimple