Reputation: 23
I have seen a lot of posts about duplicate entries on log using log4j2. The solution seems to be add the additivity attribute and set it to false, but it seems is not working for me.
Here's my log4j2.xml
<Configuration status="DEBUG">
<Appenders>
<Console name="Console" target="SYSTEM_OUT" additivity="false">
<PatternLayout pattern="%d{dd-MM-yyyy HH:mm:ss} [%t] %-5level %logger{36} - %msg%n" />
</Console>
<File name="File" fileName="C:\Laguna\Logs\Laguna.log">
<PatternLayout pattern="%d{dd-MM-yyy HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
</File>
</Appenders>
<Loggers>
<Root level="off">
<AppenderRef ref="Console"/>
<AppenderRef ref="File"/>
</Root>
<Logger name="br.com.flutuante.laguna" level="trace" additivity="false">
<AppenderRef ref="Console"/>
<AppenderRef ref="File"/>
</Logger>
</Loggers>
</Configuration>
I'm having duplicate logs in both console and file logs. I have tried add additivity="false" everywhere and even removed ROOT entry but can't get it right.
Can anyone help me?
Maybe i'm coding the class wrong?
I'm doing this to get the logger object...
static final org.apache.logging.log4j.Logger logger = LogManager.getLogger(Laguna.class.getName());
and using it like this...
logger.info("Arquivo de configuração carregado");
Upvotes: 1
Views: 2969
Reputation: 209
It might be because you are missing a Root logger, try adding one with level="OFF" if you don't want any other logs.
Edit: Not sure if this is what you want, it should turn off all logging except the specified loggers:
<Logger name="br.com.flutuante.laguna" level="trace"/>
<Root level="off">
<AppenderRef ref="Console"/>
<AppenderRef ref="File"/>
</Root>
or just change the level in Root to set a default logging level while setting the specified logger to trace
Upvotes: 2