我的log4j2日志文件总是每行都有双输出。请问如何停止重复?

问题描述 投票:0回答:2
java logging configuration log4j log4j2
2个回答
52
投票

您的根记录器和命名记录器都引用同一个附加程序。 每个活动记录器都会向其附加器发送一个事件,因此附加器将多次接收该事件,每个记录器一次。 (根记录器将获取所有事件,命名记录器将仅获取代码中具有匹配名称的记录器发出的事件。)

这称为可加性。请参阅http://logging.apache.org/log4j/2.x/manual/configuration.html#Additivity

您可以在指定的记录器配置中设置 additivity="false"。


1
投票

不需要为每个命名记录器指定单独的附加器,除非目标与根记录器附加器不同。您也可以重写如下:

<Root level="error">
        <!-- <AppenderRef ref="CONSOLE"/> -->
        <AppenderRef ref="ROLLING_FILE"/>
</Root>
<!-- Controls packages -->
<Logger name="com.jarmel.pharmacy.controls.BarCodeOrderServlet" level="trace"/>
        
<Logger name="com.jarmel.pharmacy.controls.GetCodeValues" level="error"/>
           
<Logger name="com.jarmel.pharmacy.controls.GetPersonnelServlet" level="error"/>
            
© www.soinside.com 2019 - 2024. All rights reserved.