takidoso
Erfahrenes Mitglied
Hallo und Halli,
irgendwie ist es sehr merkwürdig und ich bin mit meinem Latein zumindest kurzzeitig am Ende.
Ich möchte verschiedene log-Level auf verschiedene Dateien aufteilen. Dazu hatte ich in einem Tutorial auch den entsprechenden Ansatz gefunden nämlich über Filter.
Hier das Beispiel aus dem Tutorial
Und hier das was ich mache, schaut eigetnlich ziemlich genauso aus
Alternativ hatte ich die die category-tags auch zusammengefasst
Leider stelle ich fest, dass seitdem ich die Filter eingebaut habe, keine Dateien mehr erzeugt sondern alles auf Konsole geschrieben wird.
Irgendwie kann ich aber nicht glauben das ein solcher Bug in log4j existiert und gehe eher auf ein eigens gebautes Problem aus. Frage mich aber wirklich was ich so anders mache als in dem Tutorial-Beispiel.
Für Hinweise und Ideen wie ich der Lage Herr werde bin ich mordsmäßig dankbar
Takidoso
irgendwie ist es sehr merkwürdig und ich bin mit meinem Latein zumindest kurzzeitig am Ende.
Ich möchte verschiedene log-Level auf verschiedene Dateien aufteilen. Dazu hatte ich in einem Tutorial auch den entsprechenden Ansatz gefunden nämlich über Filter.
Hier das Beispiel aus dem Tutorial
Code:
Separate Dateien
Ich möchte DEBUG Meldungen in eine eigene Datei schreiben und alle anderen Meldungen in eine andere. Das können wir nur mit XML machen, da wir einen LevelRange-Filter benötigen.
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >
<log4j:configuration>
<appender name="file"
class="org.apache.log4j.RollingFileAppender">
<param name="maxFileSize" value="100KB" />
<param name="maxBackupIndex" value="5" />
<param name="File" value="test.log" />
<param name="threshold" value="info" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{ABSOLUTE} %5p %c{1}:%L - %m%n" />
</layout>
</appender>
<appender name="debugfile"
class="org.apache.log4j.RollingFileAppender">
<param name="maxFileSize" value="100KB" />
<param name="maxBackupIndex" value="5" />
<param name="File" value="debug.log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{ABSOLUTE} %5p %c{1}:%L - %m%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="debug" />
<param name="LevelMax" value="debug" />
</filter>
</appender>
<root>
<priority value="debug"></priority>
<appender-ref ref="debugfile" />
<appender-ref ref="file" />
</root>
</log4j:configuration>
Und hier das was ich mache, schaut eigetnlich ziemlich genauso aus
Code:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="gfcApp" class="org.apache.log4j.DailyRollingFileAppender">
<param name="datePattern" value="'.'yyyy-MM-dd" />
<param name="file" value="logs/${user.name}/gfc.log" />
<param name="Append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{ISO8601} %-5p [%t] %c: %m%n" />
</layout>
</appender>
<appender name="fdAppErr" class="org.apache.log4j.DailyRollingFileAppender">
<param name="datePattern" value="'.'yyyy-MM-dd" />
<param name="file" value="logs/${user.name}/filedemon.error" />
<param name="Append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{ISO8601} %-5p [%t] %c: %m%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="fatal" />
<param name="LevelMax" value="warn" />
</filter>
</appender>
<appender name="fdAppLog" class="org.apache.log4j.DailyRollingFileAppender">
<param name="datePattern" value="'.'yyyy-MM-dd" />
<param name="file" value="logs/${user.name}/filedemon.log" />
<param name="Append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{ISO8601} %-5p [%t] %c: %m%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="warn" />
<param name="LevelMax" value="info" />
</filter>
</appender>
<appender name="fdAppTrace" class="org.apache.log4j.DailyRollingFileAppender">
<param name="datePattern" value="'.'yyyy-MM-dd" />
<param name="file" value="logs/${user.name}/filedemon.trace" />
<param name="Append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{ISO8601} %-5p [%t] %c: %m%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="debug" />
<param name="LevelMax" value="trace" />
</filter>
</appender>
<category name="de.equens.filedemon">
<priority value="DEBUG" ></priority>
<appender-ref ref="fdAppErr" />
</category>
<category name="de.equens.filedemon">
<priority value="DEBUG" ></priority>
<appender-ref ref="fdAppLog" />
</category>
<category name="de.equens.filedemon">
<priority value="DEBUG" ></priority>
<appender-ref ref="fdAppTrace" />
</category>
</log4j:configuration>
Code:
...
<category name="de.equens.filedemon">
<priority value="DEBUG" ></priority>
<appender-ref ref="fdAppErr" />
<appender-ref ref="fdAppLog" />
<appender-ref ref="fdAppTrace" />
</category>
...
Leider stelle ich fest, dass seitdem ich die Filter eingebaut habe, keine Dateien mehr erzeugt sondern alles auf Konsole geschrieben wird.
Irgendwie kann ich aber nicht glauben das ein solcher Bug in log4j existiert und gehe eher auf ein eigens gebautes Problem aus. Frage mich aber wirklich was ich so anders mache als in dem Tutorial-Beispiel.
Für Hinweise und Ideen wie ich der Lage Herr werde bin ich mordsmäßig dankbar
Takidoso