`

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

阅读更多

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>

分享到:
评论

相关推荐

    Log4j日志配置说明,Log4j日志配置说明

    本文将通过一份示例文档来详细解析 Log4j 的日志配置方法。 #### 二、安装与配置 ##### 1. 安装 Log4j 包 首先,你需要下载并安装 Log4j。本示例中使用的是 `log4j-1.2.8.jar` 这个版本。将其复制到项目中的 `WEB...

    一种基于Log4J的日志输出组件的设计

    通过基于Log4J开发的日志输出组件,不仅可以有效地管理日志信息,还能够提高开发效率和代码质量。该组件通过合理的日志分级机制和灵活的输出方式,为系统的维护和审计提供了有力的支持。对于类似AMSystem这样的大型...

    maven+springmvc+mybatis+log4j框架搭建

    配置Log4j,你需要创建一个`log4j.properties`或`log4j.xml`文件,定义日志级别(如DEBUG、INFO、WARN等)、输出目的地和布局格式。这样,你就可以在开发和调试过程中方便地追踪错误和调试信息。 在实际项目中,这...

    slf4j-log4j相关jar

    4. 配置Log4j的配置文件(如log4j.properties或log4j.xml),定义日志级别、输出目的地和格式等。 5. 在代码中使用SLF4J的API记录日志,例如: ```java import org.slf4j.Logger; import org.slf4j.LoggerFactory; ...

    Quartz任务调度框架和log4j各种文档集合

    总的来说,Quartz和Log4j是Java开发中的两个重要工具,它们分别解决了自动化任务调度和日志管理的问题。掌握这两个工具的使用,对于提升应用程序的管理和维护能力具有极大的价值。通过深入研究提供的文档,开发者...

    一个Log4j配置文件,感觉还不错

    - **自定义日志等级**:可以通过定义新的日志级别来满足特殊需求,例如`log4j.additivity.myCategory=false`可以防止日志信息在父类别和子类别之间重复。 - **异步日志记录**:通过使用`AsyncAppender`可以提高...

    hibernate+slf4j+log4j+junit包

    在Java开发领域,Hibernate、SLF4J、Log4j以及JUnit是四个非常重要的库,它们各自服务于不同的目的,但又常被一起使用以构建高效、可维护的项目。让我们来详细了解一下这些技术和它们在软件开发中的作用。 1. ...

    Log4j不同模块输出到不同的文件中

    Log4j是一个广泛使用的日志记录框架,它允许开发者对应用程序进行详细的日志记录,以帮助调试、性能分析和故障排查。在某些情况下,我们希望将不同模块的日志信息输出到不同的文件中,以便于管理和分析。以下是实现...

    log4j使用详解

    ### log4j使用详解 #### 一、Log4j概览与核心组件 ...总之,log4j作为一款功能强大且易于使用的日志框架,为Java开发者提供了丰富的工具和配置选项,帮助他们更好地管理和分析应用程序的日志信息。

    利用Log4j将不同Package的日志输出到不同文件的方法

    本文将详细讲解如何利用Log4j将不同包的日志输出到不同的文件,以实现日志的分类管理,提高日志的可读性和实用性。 首先,我们需要理解Log4j配置的核心部分——`log4j.properties`文件。这个文件决定了日志的级别、...

    log4文件

    描述中的重复内容似乎是一个错误,没有提供额外的具体信息,因此我们将基于“log4”的标签来展开讨论Log4j的核心概念和使用。 --- **Log4j简介** Log4j是Apache软件基金会的一个开源项目,它为Java应用程序提供了...

    hibernate开发的工具包(注解包,mysql包,日志log4j包)

    通过引入`log4j.jar`,开发者可以在代码中使用Log4j的API(如`Logger`,`Level`等)来控制和记录各种级别的信息,如DEBUG、INFO、WARN、ERROR等。Log4j的配置文件(通常为`log4j.properties`或`log4j.xml`)可以定制...

    eclipse插件 log4e

    在Eclipse中直接编辑log4j.properties或log4j.xml文件,可以实时预览和应用更改,避免了因配置错误导致的问题,降低了调试成本。同时,插件还支持多种配置模板,适应不同项目的需求,使得日志级别设置、输出格式定制...

    struts+hibernate+spring+xdoclet+ant+log4j

    **Log4j** 是一个日志记录框架,它提供灵活的日志配置,可以根据不同的需求输出不同级别的日志信息,如调试、信息、警告和错误。Log4j的配置简单,且性能高效,是Java应用中广泛使用的日志解决方案。 当这些技术...

    Log4j 日志文件Linux/Mac/Windows通用存放位置设置方法

    在不同的操作系统如 Linux、Mac 和 Windows 上,设置 Log4j 的日志文件存放位置是非常重要的,因为它可以帮助我们更好地组织和查找日志信息。下面我们将详细介绍如何设置这些系统的通用存放位置。 首先,我们需要...

    struts2 + spring + tiles + log4j blank framewotk

    Log4j允许开发者控制日志输出的位置、格式和级别,以便于调试和监控应用的运行状态。此外,Log4j还可以与其他日志框架(如Logback)兼容,通过使用Log4j的API,可以轻松切换底层的日志实现。 综合运用这四个框架,...

    ssm_postgresql_事务_log4j.rar

    通过配置log4j.properties或log4j.xml文件,开发者可以控制日志信息输出的级别(如DEBUG、INFO、WARN、ERROR等)、输出目的地(控制台、文件、数据库等)以及格式。在SSM与PostgreSQL的结合中,日志记录可以帮助...

    log4j,dom4j,jstl.xpath等web开发所有jar包

    log4j允许开发者自定义日志级别(如DEBUG, INFO, WARN, ERROR, FATAL),并可以将日志信息输出到控制台、文件、电子邮件、数据库等不同目的地。通过配置文件(如log4j.properties或log4j.xml),开发者可以轻松地...

    ssm+log4j+JUnit(eclipse)

    Log4j还有多种输出格式和目的地,如文件、控制台、网络等,方便收集和分析日志信息。 **JUnit**:JUnit是Java编程语言中最常用的单元测试框架。它提供了编写和运行可重复的测试的工具,确保代码的正确性和稳定性。...

Global site tag (gtag.js) - Google Analytics