2014-02-25 117 views
5

我在我的类路径下面的log4j.xml文件:重复Log4J日志

<appender class="org.apache.log4j.ConsoleAppender" name="Console"> 
    <param name="Threshold" value="info" /> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param value="%d %-5p [%t] %C (%F:%L) - %m%n" name="ConversionPattern"/> 
    </layout> 
    <filter class="org.apache.log4j.varia.LevelRangeFilter"> 
     <param value="info" name="LevelMax"/> 
     <param value="info" name="LevelMin"/> 
    </filter> 
</appender> 

<logger name="de.scm.cci.importer"> 
    <level value="info"/> 
</logger> 

<logger name="com.mchange"> 
    <level value="info"/> 
</logger> 
<logger name="jdbc"> 
    <level value="error"/> 
</logger> 
<logger name="org.hibernate"> 
    <level value="info"/> 
</logger> 
<logger name="org.springframework"> 
    <level value="info"/> 
</logger> 

<root> 
    <level value="INFO"/> 
    <appender-ref ref="Console"/> 
</root> 

下面是输出的前几行:

log4j: Trying to find [log4j.xml] using context classloader [email protected] 
log4j: Using URL [file:/opt/app/cci/CCIImporter/jar/log4j.xml] for automatic log4j configuration. 
log4j: Preferred configurator class: org.apache.log4j.xml.DOMConfigurator 
log4j: System property is :null 
log4j: Standard DocumentBuilderFactory search succeded. 
log4j: DocumentBuilderFactory is: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl 
log4j: debug attribute= "true". 
log4j: reset attribute= "false". 
log4j: Threshold ="null". 
log4j: Retreiving an instance of org.apache.log4j.Logger. 
log4j: Setting [de.scm.cci.importer] additivity to [true]. 
log4j: Level value for de.scm.cci.importer is [info]. 
log4j: de.scm.cci.importer level set to INFO 
log4j: Retreiving an instance of org.apache.log4j.Logger. 
log4j: Setting [com.mchange] additivity to [true]. 
log4j: Level value for com.mchange is [info]. 
log4j: com.mchange level set to INFO 
log4j: Retreiving an instance of org.apache.log4j.Logger. 
log4j: Setting [jdbc] additivity to [true]. 
log4j: Level value for jdbc is [error]. 
log4j: jdbc level set to ERROR 
log4j: Retreiving an instance of org.apache.log4j.Logger. 
log4j: Setting [org.hibernate] additivity to [true]. 
log4j: Level value for org.hibernate is [info]. 
log4j: org.hibernate level set to INFO 
log4j: Retreiving an instance of org.apache.log4j.Logger. 
log4j: Setting [org.springframework] additivity to [true]. 
log4j: Level value for org.springframework is [info]. 
log4j: org.springframework level set to INFO 
log4j: Level value for root is [INFO]. 
log4j: root level set to INFO 
log4j: Class name: [org.apache.log4j.ConsoleAppender] 
log4j: Setting property [threshold] to [INFO]. 
log4j: Parsing layout of class: "org.apache.log4j.PatternLayout" 
log4j: Setting property [conversionPattern] to [%d %-5p [%t] %C (%F:%L) - %m%n]. 
log4j: Setting property [levelMax] to [INFO]. 
log4j: Setting property [levelMin] to [INFO]. 
log4j: Adding filter of type [class org.apache.log4j.varia.LevelRangeFilter] to appender named [Console]. 
log4j: Adding appender named [Console] to category [root]. 
2014-02-25 13:20:25,534 INFO [main] de.scm.cci.importer.RunTest (RunTest.java:21) - Starting loop mode 
2014-02-25 13:20:25,537 INFO [main] de.scm.cci.importer.RunTest (RunTest.java:24) - Started... 
PERSISTENCE LOADING 
2014-02-25 13:20:25,767 INFO [main] org.springframework.context.support.AbstractApplicationContext (AbstractApplicationContext.java:513) - Refreshing org[email protected]52545254: startup date [Tue Feb 25 13:20:25 CET 2014]; root of context hierarchy 
233 [main] INFO org.springframework.context.support.ClassPathXmlApplicationContext - Refreshing org[email protected]52545254: startup date [Tue Feb 25 13:20:25 CET 2014]; root of context hierarchy 
2014-02-25 13:20:25,877 INFO [main] org.springframework.beans.factory.xml.XmlBeanDefinitionReader (XmlBeanDefinitionReader.java:316) - Loading XML bean definitions from class path resource [de/scm/cci/backend/public/spring-config.xml] 

一旦弹簧开始加载,输出的每一行都在加倍:

2014-02-25 13:20:25,767 INFO [main] org.springframework.context.support.AbstractApplicationContext (AbstractApplicationContext.java:513) - Refreshing org[email protected]52545254: startup date [Tue Feb 25 13:20:25 CET 2014]; root of context hierarchy 
233 [main] INFO org.springframework.context.support.ClassPathXmlApplicationContext - Refreshing org[email protected]52545254: startup date [Tue Feb 25 13:20:25 CET 2014]; root of context hierarchy 

我完全无能为力,其中第二行来自。

编辑: 奇怪:我收到警告消息,尽管我设置所有可能的threasholds和东西仅INFO ...?

回答

3

因为你只有一个的appender声明的,重复的日志的格式一样,它似乎很清楚,你有多个日志框架会在同一时间:在

  • log4j的你春天里的

自己的代码

  • 共享记录,你需要做的是:

    • 从您的类路径中删除commons-logging依赖项。如果您使用的是maven,则必须在每个弹簧模块中排除来自的常见测井广告瓶。
    • 添加JCL-过SLF4J到classpath

    Maven的例子(如何删除共享记录):注意:您需要在每一个春天的依赖

    <dependency> 
        <groupId>org.springframework</groupId> 
        <artifactId>spring-web</artifactId> 
        <version>${spring.version}</version> 
        <exclusions> 
        <exclusion> 
         <artifactId>commons-logging</artifactId> 
         <groupId>commons-logging</groupId> 
        </exclusion> 
        </exclusions> 
    </dependency> 
    

    这种排斥语法Maven的例子(如何添加SLF4J,你可能已经这样做):如果你不使用Maven

    <dependency> 
        <groupId>org.slf4j</groupId> 
        <artifactId>slf4j-api</artifactId> 
        <version>1.7.7</version> 
    </dependency> 
    
    <dependency> 
        <groupId>org.slf4j</groupId> 
        <artifactId>jcl-over-slf4j</artifactId> 
        <version>1.7.7</version> 
    </dependency> 
    

    ,让我知道,我会尽力帮助您的具体环境。

  • +0

    那好吧,这似乎是诀窍!我目前还没有使用maven,并从类路径中删除了commons-logging jar。 jcl-over-sl4j目前不在,可能会导致问题?我现在无法全面测试,可能是本周末。 – DocJones

    +0

    我不确定在使用基本的log4j时是否存在问题,但是如果您尝试通过slf4j使用log4j,则需要使用jcl-over-slf4j软件包。 – durron597

    1

    Spring Framework不直接使用log4j - 它使用commons-logging。

    它的行为取决于应用程序类路径中的其他日志记录实现。

    什么日志记录相关的罐子在你的班级路径?

    +0

    好的,我如何从这里出发?我明白,我有不同的记录机制混合起来。我假设我还必须配置commons-logging以及看看它在哪里? – DocJones