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.
| Platzhalter | Bedeutung |
|---|
| c | Ausgabe 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. |
|---|
| C | Ausgabe 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. |
|---|
| d | Ausgabe 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} |
|---|
| F | Ausgabe des Quelldateinamens. Achtung! Verringert die Ausgabegeschwindigkeit stark. |
|---|
| l | Gibt die genaue Quelltextposition des Aufrufs aus. Diese Besteht aus Dateinamen, Klassennamen, Methode und Zeilennummer. Achtung! Verringert die Ausgabegeschwindigkeit stark. |
|---|
| L | Ausgabe der Zeilennummer des Aufrufs. Achtung! Verringert die Ausgabegeschwindigkeit stark. |
|---|
| m | Ausgabe der Lognachricht. |
|---|
| M | Ausgabe des Methodennamens des Aufrufs. Achtung! Verringert die Ausgabegeschwindigkeit stark. |
|---|
| n | Ausgabe eines Zeilenumbruchs. |
|---|
| p | Ausgabe der Priorität (Protokollstufe). |
|---|
| r | Ausgabe der Zeit in Millisekunden seit Start. |
|---|
| t | Ausgabe des Threadnamens. |
|---|
| x | Ausgabe eines NDC (NESTED DIAGNOSTIC CONTEXT). Wird von der DLE nicht verwendet. |
|---|
| X | Ausgabe 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:
| Format | Linksbündig | Min | Max |
|---|
| %20c | nein | 20 | - |
|---|
| %-20c | Ja | 20 | - |
|---|
| %.30c | - | - | 30 |
|---|
| %20.30c | nein | 20 | 30 |
|---|
| %-20.30c | Ja | 20 | 30 |
|---|
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>