This Log4j2 tutorial lists some useful and ready-made log4j2 formatting patterns for reference so we don’t waste time building these patterns every time we are creating/editing log4j configuration.
Just to mention, we use the log format pattern layout as follows. Notice the pattern
property.
<Configuration status="warn">
<Appenders>
<!-- Console appender configuration -->
<Console name="console" target="SYSTEM_OUT">
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
</Console>
</Appenders>
<Loggers>
<!-- Root logger referring to console appender -->
<Root level="info" additivity="false">
<AppenderRef ref="console" />
</Root>
</Loggers>
</Configuration>
For demo purposes, we are using the below log statements for generating the logs.
LOGGER.debug("Debug Message Logged !!");
LOGGER.info("Info Message Logged !!");
1. Simple Log Formatting
%d [%p] %c{1} - %m%n
Use it for simple logging i.e. date, level, logger, message. It will generate the below log messages.
2016-06-20 19:18:02,958 [DEBUG] Log4j2HelloWorldExample - Debug Message Logged !! 2016-06-20 19:18:02,959 [INFO] Log4j2HelloWorldExample - Info Message Logged !!
2. Left Justified Log Level
%d [%-6p] %c{1} - %m%n
Using [%-6p]
, the logging level should be left-justified to a width of six characters. Use it for simple logging with a pretty printed log level. It will generate the below output:
2016-06-20 19:21:05,271 [DEBUG ] Log4j2HelloWorldExample - Debug Message Logged !! 2016-06-20 19:21:05,272 [INFO ] Log4j2HelloWorldExample - Info Message Logged !!
3. Printing Package Information
%d [%-6p] %c{1} - %m%n
Use %c{1}
for printing the complete package level. It will generate the below output:
2016-06-20 19:22:05,379 [DEBUG ] com.howtodoinjava.log4j2.examples.Log4j2HelloWorldExample - Debug Message Logged !! 2016-06-20 19:22:05,380 [INFO ] com.howtodoinjava.log4j2.examples.Log4j2HelloWorldExample - Info Message Logged !!
%d [%-6p] %c{3} - %m%n
%c{3}
will print the package level upto two levels.
2016-06-20 19:23:48,202 [DEBUG ] log4j2.examples.Log4j2HelloWorldExample - Debug Message Logged !!
2016-06-20 19:23:48,204 [INFO ] log4j2.examples.Log4j2HelloWorldExample - Info Message Logged !!
5. Custom Date Pattern
%d{yyyy/MM/dd HH:mm:ss,SSS} [%-6p] %c{1} - %m%n
Use it for custom date format. It will generate the below output:
2016/06/20 19:24:45,076 [DEBUG ] Log4j2HelloWorldExample - Debug Message Logged !! 2016/06/20 19:24:45,078 [INFO ] Log4j2HelloWorldExample - Info Message Logged !!
6. Detailed File Name, Method Name and Line Number
%d [%-6p] %C{1}.%M(%F:%L) - %m%n
Use it for the caller class, method, source file and line number. It will generate below output:
2016-06-20 19:25:42,249 [DEBUG ] Log4j2HelloWorldExample.methodOne(Log4j2HelloWorldExample.java:14) - Debug Message Logged !! 2016-06-20 19:25:42,251 [INFO ] Log4j2HelloWorldExample.methodOne(Log4j2HelloWorldExample.java:15) - Info Message Logged !!
7. Fully Detailed Information
%sn %d{yyyy/MM/dd HH:mm:ss,SSS} %r [%-6p] [%t] %c{3} %C{3}.%M(%F:%L) - %m%n
Use it to capture everything discussed above. It will generate below output:
1 2016/06/20 19:27:03,595 620 [DEBUG ] [main] log4j2.examples.Log4j2HelloWorldExample log4j2.examples.Log4j2HelloWorldExample.main(Log4j2HelloWorldExample.java:14) - Debug Message Logged !! 2 2016/06/20 19:27:03,597 622 [INFO ] [main] log4j2.examples.Log4j2HelloWorldExample log4j2.examples.Log4j2HelloWorldExample.main(Log4j2HelloWorldExample.java:15) - Info Message Logged !!
Feel free to change and use any pattern as per your need.
Happy Learning !!