ECM
ECM
总版主
总版主
  • 社区居民
  • 忠实会员
  • 原创写手
阅读:703回复:0

log4j重复输出log信息原因和解决办法

楼主#
更多 发布于:2016-08-18 19:11
log4j的logger(旧版本称logger)是层次结构的,子logger会继承父logger的属性,appender也是可继承的属性,这常常容易导致配置错误而引起的log4j输出重复的log信息......
log4j的logger(旧版本称logger)是层次结构的,子logger会继承父logger的属性,appender也是可继承的属性,这常常 容易导致配置错误而引起的log4j输出重复的log信息。如果在在父子logger中引用了相同的appender时,例子:
    <logger name="com.erry.model">
        <level value="DEBUG"/>
        <appender-ref ref="CONSOLE"/>
    </logger>
    <logger name="com.erry.service">
        <level value="DEBUG"/>
        <appender-ref ref="CONSOLE"/>
    </logger>
    <root>
        <level value="WARN"/>
        <appender-ref ref="CONSOLE"/>
    </root>


由于子logger(com.erry.model和com.erry.service)继承了父logger(ROOT)的appender,加上其本 身引用的appender总共会在2个appender上输出消息,由于这两个appender实际上是同一个appender,所以结果会是相同的消息 被重复输出。解决这个问题很简单,只要注意不要重复引用父logger已经引用的appender即可。上述例子的正确配置如下:
    <logger name="com.erry.model">
        <level value="DEBUG"/>
    </logger>
    <logger name="com.erry.service">
        <level value="DEBUG"/>
    </logger>
    <root>
        <level value="WARN"/>
        <appender-ref ref="CONSOLE"/>
    </root>

 

 

 

 

 

 

 

异常中心网是一家专门收集整理程序员编程过程中遇到的常见异常(exception)以及各种异常问答中心的网站。异常中心网旨在,减少程序员在编码遇到异常,处理各种异常时间和痛苦,让程序员能更愉快的、快速的定位异常并查找对应的异常解决方案。异常中心网诚心打造最完美的编程社区为程序员用户服务,努力成为最好的程序员乐园程序员社区程序异常中心程序bug中心异常问答中心

 

喜欢0 评分0
游客

返回顶部