Different layout of log4j for debugging and error?

In log4j, is there a way to have logger.error (") and logger.debug (" ") include various output layouts?

I would like errors to include method names and line numbers, both of which slow down application performance.

EDIT:

After adding apache-log4j-extras, the following configuration file works.

<?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> 

This code was used for testing.

 // goes to errors.txt log.error("error"); //goes to warnings.txt log.warn("warn"); 
+6
java logging configuration log4j
source share
2 answers

In your log4j.xml configuration, you can create two applications, each of which uses LevelMatchFilter and each with a separate template output.

+9
source share

I would just install two different registrars. One is called ERROR and one is called DEBUG. Then you can easily customize the various output layouts and only call ERROR.error or DEBUG.debug.

+1
source share

All Articles