Documentation

Trace:

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

de:jvx:common:util:loggerfactory [2018/02/02 10:50] (current)
admin created
Line 1: Line 1:
 +~~Title: Logging mit der LoggerFactory~~
  
 +Ohne Log Mechanismen ist die Software Entwicklung bei weitem anstrengender als es sein müsste. Aus diesem Grunde ist bereits im Kern von JVx ein Log Mechanismus verankert. ​
 +
 +Durch UIComponent werden folgende Methoden bereitgestellt:​
 +
 +<file java>
 +public void info(Object... pInfo)
 +public void debug(Object... pInfo)
 +public void error(Object... pInfo)
 +</​file>​
 +
 +Mit Informationen (info) verknüpfen wir Ausgaben die nur für Entwickler, während der Applikationserstellung,​ relevant sind. Die Debug Ausgaben können auch auch für Endanwender hilfreich sein. Die Ausgabe von Fehlern (Error) ist für die Problembehebung von großem Vorteil und sollte im produktiven Betrieb unbedingt genutzt werden.
 +
 +Dadurch ist bei der Entwicklung von Applikationen,​ WorkScreens oder Komponenten ein einfacher Methodenaufruf nötig um das Logging zu verwenden. Es müssen keine speziellen Klassen verwendet werden.
 +
 +== JVx Logging ==
 +
 +Der Log Mechanismus von JVx definiert kein neues Logging API, doch sehr wohl eine Schnittstelle für die Integration von beliebigen Logging Frameworks.
 +
 +Die Schnittstelle wird definiert durch com.sibvisions.util.log.ILogger und verwendet mit com.sibvisions.util.log.LoggerFactory.
 +
 +In JVx ist bereits eine Implementierung für das [[http://​download.oracle.com/​javase/​1.5.0/​docs/​guide/​logging/​overview.html|Java Logging API]] enthalten!
 +
 +
 +Um das Logging von JVx unabhängig vom UI zu verwenden sind folgende Schritte notwendig:
 +
 +Erstellen eines Loggers:
 +
 +<file java>
 +ILogger log = LoggerFactory.getInstance(...);​
 +</​file>​
 +
 +Logger verwenden:
 +
 +<file java>
 +log.info(...);​
 +</​file>​
 +
 +Die Standard Implementierung von JVx geht äußerst Sparsam mit den Loggern um. Die tatsächliche Instanz eines Loggers (ILogger) wird erst initialisiert,​ wenn darauf zugegriffen wird, sprich eine Log Ausgabe erfolgt.
 +
 +Die Implementierung von vararg Parametern (Object...) wirkt sich ebenfalls positiv auf die Performance und auf die Lesbarkeit des Source Codes aus. Für gewöhnlich sind Konstrukte wie:
 +
 +<file java>
 +otherlogger.log("​Row number: " + nr +" of " + count);
 +</​file>​
 +
 +oder
 +
 +<file java>
 +if (otherlogger.isLoggable(Level))
 +{
 +    otherlogger.log("​Row number: " + nr +" of " + count);
 +}
 +</​file>​
 +
 +nicht unüblich. Der erste Aufruf verursacht in jedem Fall mehrere String Operationen,​ auch wenn der Logger die Meldung nicht ausgibt. Beim zweiten Aufruf werden diese String Operationen bewusst vermieden, machen den Source Code aber länger.
 +
 +Mit JVx würde die Log Ausgabe wie folgt codiert werden:
 +
 +<file java>
 +log.debug("​Row number: ", nr, " of ", count);
 +</​file>​
 +
 +Zugegeben findet hier eine Array Operation statt, doch diese wirkt sich - im Gegensatz zu mehreren String Operationen - unwesentlich auf die Performance aus.
 +
 +\\ 
 +Die Konfiguration der Logger ist abhängig vom eingesetzten Logging Framework. Im Falle des Java Logging API kann die Datei logging.properties verwendet werden:
 +
 +<file properties logging.properties>​
 +########################################################################​
 +# HANDLER definition
 +########################################################################​
 +
 +# development handlers
 +handlers = java.util.logging.ConsoleHandler
 +
 +# application handlers
 +#handlers = java.util.logging.FileHandler ​
 +
 +########################################################################​
 +# HANDLER configuration
 +########################################################################​
 +
 +java.util.logging.ConsoleHandler.level = ALL
 +java.util.logging.ConsoleHandler.formatter = com.sibvisions.util.log.jdk.JdkLineFormatter
 +
 +java.util.logging.FileHandler.level = ALL
 +java.util.logging.FileHandler.pattern = application_%g.log
 +java.util.logging.FileHandler.limit = 10000
 +java.util.logging.FileHandler.count = 5
 +java.util.logging.FileHandler.formatter = com.sibvisions.util.log.jdk.JdkLineFormatter
 +
 +########################################################################​
 +# Package specifig log levels
 +########################################################################​
 +
 +.level = OFF
 +
 +#​com.sibvisions.level = OFF
 +#​com.sibvisions.rad.model.level = OFF
 +#​com.sibvisions.rad.persist.level = ALL
 +#​com.sibvisions.rad.server.level = OFF
 +
 +#​javax.rad.level = ALL
 +</​file>​
 +
 +Für die Veränderung von Log Levels können auch folgende Methoden hilfreich sein:
 +
 +
 +<file java>
 +log.setLevel(level);​
 +
 +LoggerFactory.setLevel(name,​ level);
 +</​file>​
 +
 +Die Log Implementierung von JVx ist sowohl für RIAs, Desktop, Web und Android Anwendungen geeignet. Im Falle von WebUI Anwendungen ist zu beachten, daß die Log Ausgaben am Server stattfinden.
This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information