Verschiedenes log4j -Layout für Debug und Irrtum?
-
06-07-2019 - |
Frage
Gibt es in LOG4J eine Möglichkeit, logger.Eror ("") und logger.debug ("") verschiedene Ausgaberien enthalten?
Ich möchte, dass Fehler Methodennamen und Zeilennummern enthalten, die beide die Anwendungsleistung verlangsamen.
BEARBEITEN:
Nach dem Hinzufügen von Apache-Log4J-Extras funktioniert die folgende Konfigurationsdatei.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="WARNINGS" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="warnings.log"/>
<param name="DatePattern" value="'.'yyyy-MM-dd"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MMM-dd HH:mm:ss} %-5p %c - %m%n%n"/>
</layout>
<filter class="org.apache.log4j.filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG"/>
<param name="LevelMax" value="WARN"/>
</filter>
</appender>
<appender name="ERRORS" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="errors.log"/>
<param name="DatePattern" value="'.'yyyy-MM-dd"/>
<layout class="org.apache.log4j.PatternLayout">
<!-- %M for method name , %L for line number -->
<param name="ConversionPattern" value="%d{yyyy-MMM-dd HH:mm:ss} %-5p %c %M %L - %m%n%n"/>
</layout>
<filter class="org.apache.log4j.filter.LevelRangeFilter">
<param name="LevelMin" value="ERROR"/>
<param name="LevelMax" value="FATAL"/>
</filter>
</appender>
<logger name="com.foo.bar">
<appender-ref ref="WARNINGS"/>
<appender-ref ref="ERRORS"/>
</logger>
</log4j:configuration>
Dieser Code wurde zum Testen verwendet
// goes to errors.txt
log.error("error");
//goes to warnings.txt
log.warn("warn");
Lösung
In Ihrer log4j.xml -Konfiguration können Sie zwei Appender erstellen, die jeweils mit a LevelMatchFilter und jeder mit einem separaten Musterausgang.
Andere Tipps
Ich würde einfach zwei verschiedene Holzfäller einrichten. Einer namens Fehler und einer namens Debug. Anschließend können Sie einfach verschiedene Ausgabelayouts einrichten und nur aufrufen. ERROR oder DEBUG.DEBUG.