Der DLELog4jLogger

Wurde in der Konfiguration kein Logger definiert, wird dieser als Standardlogger der DLE verwendet. Er benutzt zur Logausgabe das allgemein bekannte LOG4J System. Dieses System ist sehr mächtig und eine ausführliche Dokumentation würde hier den Rahmen sprengen. Die Beschreibung hier bezieht sich nur auf einige DLE spezifische Aspekte und einigen Beispielen zur Konfiguration. Für eine ausführliche Beschreibung von LOG4J sei auf die einschlägige Literatur und das LOG4J Projekt im Web (http://logging.apache.org/log4j/docs/) verwiesen.

Konfiguration des DLELog4jLogger

Der DLELog4jLogger verwendet beim Start eine XML Konfigurationsdatei. Diese liegt im DLE Installationsverzeichnis unter dem Dateinamen etc/config/Log4jConfig.xml.
Es handelt sich um eine Standard LOG4J XML Konfiguration. Änderungen, die an dieser Datei im laufenden Betrieb vorgenommen werden, werden automatisch übernommen, sobald eine neue Session erstellt wird.
Zur Konfiguration von LOG4J werden so genannte Logger und Appender definiert. Ein Logger ist für die Protokollierung einer Hierarchie zuständig. Unterschiedliche Logger können für unterschiedliche Hierarchien definiert werden. Sie steuern, was in welcher Form ausgegeben wird.
Appender formatieren die Ausgabe und leiten sie an bestimmte Ausgabemedien (Konsole, Datei, Netzwerk, Systemlog etc.) weiter.
Jedem Logger können dabei ein oder mehrere Appender zugeordnet werden.
Ein spezieller Logger ist der root Logger, ist für eine Hierarchie kein eigener Logger definiert, wird dieser verwendet.
Das folgende Beispiel definiert nur einen root Logger, der einen Appender verwendet, der das Protokoll auf die Konsole ausgibt.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="false">
<appender
name="ConsoleAppender"
class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out"/>
<layout class="org.apache.log4j.PatternLayout">
<param
name="ConversionPattern"
value="%-5r %X{DLEuser} [%t] %-5p %c %x - %m%n"/>
</layout>
</appender>
<root>
<level value="debug" />
<appender-ref ref="ConsoleAppender" />
</root>
</log4j:configuration>

Der Eintrag <level value=“debug“> legt die Protokollstufe fest. Diese kann für den root Logger auch über die DLE Konfiguration gesteuert werden.
Das ConversionPattern formatiert die Ausgabe. Dazu können in einem Formatierungsstring Platzhalter mit Formatanweisungen eingefügt werden.
Die Platzhalter starten immer mit einem Prozentzeichen (%), gefolgt von einem Platzhalterzeichen. Diese werden dann durch entsprechende Informationen zur Laufzeit ersetzt.

PlatzhalterBedeutung
cAusgabe der Kategorie (Hierarchie). Optional kann in geschweiften Klammern die Anzahl der auszugebenden Stufen (von rechts aus) angegeben werden.
Beispiel: Mit dem Muster %c{2} wird die Hierarchie a.b.c als b.c ausgegeben.
CAusgabe des voll qualifizierten Klassennamens der aufrufenden Klasse. Auch hier kann die Hierarchietiefe angegeben werden.
Beispiel: Mit dem Muster %C{1} wird nur der Klassenname ausgegeben.
dAusgabe des Datums. In geschweiften Klammern kann eine fixe Formatierung (DATE, ABSOLUTE, ISO8601) angegeben werden, oder ein Datumsformat aus SimpleDateFormat. (Beschrieben in den Metadaten).
Beispiel: %d{ISO8601}
Beispiel: %d{HH:mm:ss,SSS}
FAusgabe des Quelldateinamens.
Achtung! Verringert die Ausgabegeschwindigkeit stark.
lGibt die genaue Quelltextposition des Aufrufs aus. Diese Besteht aus Dateinamen, Klassennamen, Methode und Zeilennummer.
Achtung! Verringert die Ausgabegeschwindigkeit stark.
LAusgabe der Zeilennummer des Aufrufs.
Achtung! Verringert die Ausgabegeschwindigkeit stark.
mAusgabe der Lognachricht.
MAusgabe des Methodennamens des Aufrufs.
Achtung! Verringert die Ausgabegeschwindigkeit stark.
nAusgabe eines Zeilenumbruchs.
pAusgabe der Priorität (Protokollstufe).
rAusgabe der Zeit in Millisekunden seit Start.
tAusgabe des Threadnamens.
xAusgabe eines NDC (NESTED DIAGNOSTIC CONTEXT).
Wird von der DLE nicht verwendet.
XAusgabe eines MDC (MAPPED DIAGNOSTIC CONTEXT).
Es werden zwei Werte von der DLE übergeben. Der Benutzer und die Mandantenkennung.
Beispiel: %X{DLEUser}
Beispiel: %X{DLEClientID}
%Ausgabe eines Prozentzeichens.

Die Platzhalter können noch mit optionalen Formatierungsanweisungen versehen werden. Diese stehen zwischen dem Prozentzeichen und dem Platzhalter. Durch ein Minuszeichen wird die Ausgabe linksbündig formatiert. Zudem können eine minimale und optional eine maximale Länge der Ausgabe angegeben werden. Hier einige Beispiele mit der Ausgabe der Kategorie:

FormatLinksbündigMinMax
%20cnein20-
%-20cJa20-
%.30c--30
%20.30cnein2030
%-20.30cJa2030

Wie Eingangs beschrieben, können mehrere Logger definiert werden und deren Ausgabe jeweils dirigiert werden. Folgendes Beispiel protokolliert alle DLE Ausgaben in eine Datei, die täglich umbenannt wird. Ausgaben einer Brickausführung werden auf der Konsole ausgegeben:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="false">
<appender
name="DailyRollingFileAppender"
class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="DLE.log"/>
<param name="DatePattern" value="'.'yyyy-MM-dd"/>
<param name="Append" value="false"/>
<layout class="org.apache.log4j.PatternLayout">
<param
name="ConversionPattern"
value="%d %X{DLEuser} [%t] %-5p %c{1} - %m%n"/>
</layout>
</appender>
<appender
name="ShortConsoleAppender"
class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out"/>
<layout class="org.apache.log4j.PatternLayout">
<param
name="ConversionPattern"
value="%d %X{DLEuser} %c{1} - %m%n"/>
</layout>
</appender>
<logger name="brick">
<level value="debug"/>
<appender-ref ref="ShortConsoleAppender"/>
</logger>
<root>
<level value="debug"/>
<appender-ref ref="DailyRollingFileAppender" />
</root>
</log4j:configuration>