Log4j2 – Useful Log Format Pattern Layouts

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

Was this post helpful?

Join 7000+ Awesome Developers

Get the latest updates from industry, awesome resources, blog updates and much more.

* We do not spam !!

4 thoughts on “Log4j2 – Useful Log Format Pattern Layouts”

  1. Hi , I want to print log message only for my custom log appender created to log particular information to different log file .But though I am using conversion pattern “%m%n” , it is printing date ,thread,class information as well which I dont need . Is there any extra setting for custom appenders ?

    Reply
    • Checkout the highlight property of patterns. e.g.

      pattern=&quot;%highlight{%d{HH:mm:ss.SSS} %-5level %logger{36}.%M() @%L - 
      %msg%n}{FATAL=red blink, ERROR=red, WARN=yellow bold, INFO=black, DEBUG=green bold, TRACE=blue}&quot;
      Reply

Leave a Comment

HowToDoInJava

A blog about Java and related technologies, the best practices, algorithms, and interview questions.