`
guyongpeng
  • 浏览: 61837 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

依赖jar包里的log4j配置将自己应用的log4j.properties屏蔽掉的问题

阅读更多
java世界里的log有多种实现,常用的有log4j和jdk1.4后自带的java.util.logging。

好事的apache弄了个common-logging项目隔离了log4j和logging以及其它的log实现的差异。

这样开源项目库里统一采用common-logging,就可以自行决定在自己的应用中采用何种实现,并跟所依赖的jar包统一起来。

据common-logging的官方文档,决定实现方式的策略如下:
1.首先查找org.apache.commons.logging.Log属性,该属性可以在java代码中设置,更常见的是在classpath下的common-logging.properties文件中进行设置
2.在系统属性中查找org.apache.commons.logging.Log
3.如果类路径中有log4j的jar包,则采用log4j实现
4.如果jdk版本为1.4,采用Jdk14Logger
5.采用common-logging提供的SimpleLog
以上前一步若满足,则以该步骤的结果为准,后面的步骤均不执行。

用maven运行mvn test时,发现我的debug信息都打不出来,只能打出error信息,而且格式怪模怪样的。

检查了我的log4j的log4j.properties里的配置的priority为debug。
以为是maven搞鬼了,打开eclipse,运行test,问题照旧。

移除log4j.properties,现象一样,表明我的log4j.properties未生效。

怀疑我的log实现不是log4j,加入监视信息,打出我的log

Log log = LogFactory.getLog(HyperlinkHandler.class);
System.out.println("log = " + log);


结果确实为org.apache.commons.logging.impl.Log4jLogger。

肯定是依赖的jar包中搞了鬼,祭出了屡试不爽的二分法,一一排查可疑的jar包,终于在该死的jxls-core-0.9.5.jar中发现了log4j.xml,该配置的默认priority为warn:

    <root>
        <level value="WARN"/>
        <appender-ref ref="CONSOLE"/>
    </root>

该配置优先于我的log4j.properties,使可怜的它失去了效果。
分享到:
评论
3 楼 codeutil 2007-10-19  
手工重新    configure一下即可:


      org.apache.log4j.LogManager.resetConfiguration();
然后:

org.apache.log4j.PropertyConfigurator.configure("c:/yourlog4j.properties");

或者


      org.apache.log4j.xml.DOMConfigurator.configure("c:/yourlog4j.xml");



2 楼 guyongpeng 2007-10-19  
回楼上的,这里二分法就是指缩小排查范围的傻瓜方法
比如问题肯定出在20个jar包中,但不知道是哪个
就先去掉10个jar包,看问题是否存在
如依然存在,就在剩下的10个包中再二分法;否则在去掉的10个jar中继续以二分法排查,一直找到出问题的jar包为止

PS:这个方法的可行性基于排查范围呈几何级的减少,与时下所说的长期基金投资复利的威力有相通之处。
1 楼 roc8633284 2007-10-19  
屡试不爽的二分法! 二分法是什么?想知道。

相关推荐

    log4j.jar包,和log4j.properties配置文件下载

    在实际应用中,将`log4j.jar`添加到项目的类路径中,并根据项目需求定制`log4j.properties`,即可实现有效的日志管理。这不仅有助于问题排查,也有利于系统维护和性能优化,因为过多的日志可能会占用大量磁盘空间,...

    log4j使用jar包和log4j.properties配置文件

    本文将详细探讨Log4j的使用,主要关注1.2.17版本的jar包以及配置文件`log4j.properties`。 ### 1. Log4j简介 Log4j是一个开源的日志组件,支持多种输出格式,如控制台、文件、数据库等。它的核心概念包括Logger、...

    log4j配置实例(含配log4j.properties及jar包)

    - **引入依赖**: 首先需要添加Log4j的jar包,如`log4j-1.2.17.jar`到项目类路径中。 - **获取Logger**: 通过`Logger.getLogger(Class)`获取指定类的日志记录器。 - **日志方法调用**: 使用`debug()`, `info()`, `...

    log4j所依赖jar包

    这表明,除了Log4j的主要库之外,这个压缩包可能还包含了Log4j依赖的其他第三方库,这些库可能是为了实现特定功能或者与其他日志系统兼容而引入的。 在压缩包子文件的文件名称列表中,我们看到了两个文件:0.txt和...

    MANIFEST.MF的应用以及如何读取jar包外的log4j.properties

    描述中提到的“如何读取jar包外的log4j.properties”,这是Java日志框架Log4j的一个常见需求。Log4j是一个强大的日志处理库,它允许开发者通过配置文件(如log4j.properties或log4j.xml)来定制日志记录级别、输出...

    log4j-1.2.17的jar包以及依赖包,还有一份log4j的配置文件,输出到控制台和文件夹两种配置

    此版本包含了log4j-1.2.17.jar主库文件,以及一个依赖包commons-logging-1.2.jar,这两个组件是Log4j正常运行所必需的。 **一、Log4j核心组件** 1. **log4j-1.2.17.jar**: 这是Log4j的主要库文件,包含了所有Log4j...

    log4j与log4j.properties的配置.doc

    1. 在应用程序中使用 Log4j,需要将 Log4j 库文件(log4j-*.jar)添加到 CLASSPATH 变量中。 2. 新建一个配置文件 log4j.properties,放于 bin 文件下。 二、log4j.properties 配置文件 log4j.properties 配置文件...

    log4j需要的jar以及properties文件

    总的来说,Log4j是一个强大且灵活的日志工具,通过`log4j-1.2.9.jar`和`log4j.properties`这两个文件,我们可以轻松地在Java项目中实现定制化的日志记录,从而提升开发效率和问题排查能力。虽然Log4j 1.x已经较为...

    log4j2-所需jar包+配置详解(详细)

     log4j 2.x版本不再支持像1.x中的.properties后缀的文件配置方式,2.x版本配置文件后缀名只能为".xml",".json"或者".jsn".  系统选择配置文件的优先级(从先到后)如下:  (1).classpath下的名为log4j2-test.json...

    log4j-1.2.11jar和log4j.properties配置文件

    本篇将详细介绍Log4j 1.2.11版本以及其核心组件——`log4j.properties`配置文件。 **一、Log4j简介** Log4j是基于组件的日志框架,它提供了一种灵活的方式来记录应用程序中的事件。这些事件可以是错误、警告、调试...

    log4j.properties

    log4j.properties ,commons-logging-1.2.jar,log4j-1.2.16.jar,三个文件一起组成一个完整的日志输出,Apache的Common Logging只是一个高层的日志框架,本身并没有实现真正的写日志能力,而是依赖其它的日志系统如...

    log4j-1.2.16.jar与slf4j-api-1.6.1.jar加个转换包和log4j.properties示例

    在给定的标题和描述中提到的"log4j-1.2.16.jar"和"slf4j-api-1.6.1.jar"都是Java日志框架中的关键组件,而"转换包"则是为了实现这两个框架之间的兼容性。接下来,我们将深入探讨这些组件以及如何结合使用。 **Log4j...

    Log4j+使用方法+配置文件log4j.properties

    本文将详细介绍Log4j的使用方法以及配置文件`log4j.properties`的设置。 1. **Logger** Logger是日志信息的源头,它是Log4j中最基本的类。通过创建Logger实例,你可以为不同的类或模块分配不同的日志级别,如DEBUG...

    log4j.properties配置详解

    ### Log4j.properties配置详解 #### 一、Log4j简介与配置流程 Log4j是Apache的一个开源项目,用于实现日志记录功能。通过合理的配置可以极大地提高系统的可维护性和可扩展性,并且便于问题定位。本文将详细介绍`...

    log4j-1.2.15.jar

    2. **配置灵活性**:通过配置文件(通常为log4j.properties或log4j.xml),开发者可以灵活控制日志的级别(DEBUG, INFO, WARN, ERROR, FATAL)以及输出目的地(控制台、文件、数据库等)。 3. **多种Appender**:...

    Log4j jar包及其配置方法

    这个压缩包"Log4j及其配置.rar"包含了Log4j的jar包(log4j-1.2.15.jar)以及相关的配置文档,旨在帮助开发者理解和使用Log4j。 一、Log4j介绍 Log4j是Apache软件基金会的一个开源项目,最初由Ceki Gülcü创建。它...

    lo4j简单项目(包括jar包和log4j.properties)

    lo4j简单项目(包括commons-discovery-0.2.jar, commons-logging.jar, log4j-1.2.8.jar三个jar包和log4j.properties,以及测试类)

    log4j开发jar包及log4j配置文件

    `log4j-1.2.17.jar` 是Log4j 1.2.x系列的版本,尽管Log4j 2.x已经发布,但很多老项目仍然依赖于1.2.x版本。它的API和实现略有不同,如果你的项目需要兼容旧版本,这个JAR文件是必不可少的。 `commons-logging-1.1.1...

    新版本与旧版本log4j.jar包下载,附使用说明----.zip

    3. **IDEA与log4j**: IntelliJ IDEA(简称IDEA)是一款流行的Java集成开发环境,它支持将log4j集成到项目中,通过配置pom.xml或build.gradle文件添加依赖,或者手动将log4j.jar添加到项目的类路径下,以便在IDEA中...

    Log4j jar包.rar

    Log4j是一个广泛使用的Java日志框架,由...解压"Log4j jar包.rar",将JAR文件添加到项目的类路径中,然后按照需求编写配置文件,即可开始利用Log4j进行日志记录。同时,持续关注官方更新,以确保使用的版本是最安全的。

Global site tag (gtag.js) - Google Analytics