I want to use the new Log4J 2 – Java Logging Framework. Everything work fine, but I tried since a hour to load a custom configuration file to configure the logging (like log level).
This is my log4j2.xml:
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF">
<appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</appenders>
<loggers>
<root level="error">
<appender-ref ref="Console"/>
</root>
</loggers>
</configuration>
I tried the following, but nothing works:
- Move the log4j2.xml file so it's located in the default package.
- Move the log4j2.xml file anywhere in the project
- Name the log4j2.xml file as "log4j.xml"
- Create a folder in your project, place your log4j2.xml file there and add that folder to your runtime classpath
Since the official website can't help me, I hope you can help me get Log4j 2 working with my configuration file.
Best Answer
Important: make sure the name of the configuration file is
log4j2.xml
(note the2
before the period) as opposed tolog4j.xml
My guess is nothing's happening because nothing is logged using the error level. You may want to try adding another logger like so:
Looks like the Configuration section might be a good resource.
To elaborate further, you're specifying a logger with the level set to "error":
This means that only the messages logged using Level.ERROR will show up in the log. Adding a logger with a less restrictive level will allow for more messages to appear in the log. I recommend taking a look at the Architecture section of the manual (if you scroll down the page you'll see the table that explains logging levels). Alternatively, you could just change the level of the root logger to trace (instead of adding a new logger)
Given the configuration you specified, executing the code below yields something like
13:27:50.244 [main] ERROR com.example.Log4j2Tester - testing ERROR level