我的log4j2日志文件总是有每行的双倍输出

时间:2016-01-21 21:56:37

标签: java logging duplicates log4j2

我在log4j2上看到很多关于日志重复条目的帖子。解决方案似乎是添加additivity属性并将其设置为false,但似乎对我不起作用。

这是我的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>

我在控制台和文件日志中都有重复的日志。 我试过在任何地方添加additivity =“false”,甚至删除ROOT条目,但无法正确使用。

任何人都可以帮助我吗?

也许我在编写错误的课程?

我这样做是为了得到记录器对象......

static final org.apache.logging.log4j.Logger logger = LogManager.getLogger(Laguna.class.getName());

并像这样使用它......

logger.info("Arquivo de configuração carregado");

1 个答案:

答案 0 :(得分:2)

可能是因为您缺少Root记录器,如果您不想要任何其他记录,请尝试添加一个level =“OFF”。

编辑:不确定这是否是您想要的,它应该关闭除指定记录器之外的所有日志记录:

<Logger name="br.com.flutuante.laguna" level="trace"/>
<Root level="off">
    <AppenderRef ref="Console"/>
    <AppenderRef ref="File"/>
</Root>

或者只是更改Root中的级别以设置默认日志记录级别,同时将指定的记录器设置为跟踪