rj93
rj93

Reputation: 573

Log4j2 - Config is found, but not working correctly

Log4j is finding my config, because as soon as I delete it I get an error message saying it couldn't find one, however it's properties are not reflected when logging.

log4j2.properties:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="TRACE">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

Test.java:

public class Test {

    private static Logger logger = LogManager.getLogger(Test.class);

    public static void main(String[] args) throws Exception {
        logger.info("test");
        logger.fatal(logger.getLevel());
    }

}

Output:

20:19:31.848 [main] FATAL io.rj93.sarcasm.examples.CnnSentenceClassificationExample - ERROR

As you can see, the logger is returning the level to be ERROR when it is set to INFO, and the time format is including the milliseconds even though it has been removed.

The config file is taken from the log4j website, with only minor changes (the two mentioned, and status="TRACE")

I am using version 2.8.1.

Upvotes: 0

Views: 1233

Answers (1)

davidxxx
davidxxx

Reputation: 131496

You use a log4j2.properties file with a XML configuration inside it.
It is not consistent.
The log4J initialization doesn't recognize the format used as a properties format. So it uses the default log4J configuration that specifies ERROR level for the root logger.

Simply rename log4j2.properties to log4j2.xml and it should be fine.

Upvotes: 3

Related Questions