log4j appender优先级冲突?

时间:2014-06-03 12:14:24

标签: java log4j

我有这个log4j.properties:

# Global logging configuration
log4j.rootLogger=WARN, file

### Direct log messages to a log file
log4j.appender.file = org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File= C:\\eclipse\\servers\\apache-tomcat-6.0.39\\logs\\log4j.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ISO8601} %5p %c{1}:%L - %m%n


### Console messages Appender
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout  
log4j.appender.console.layout.ConversionPattern=%d{ISO8601} %5p %c{1}:%L - %m%n

### Appender-to-Class definition
log4j.logger.com.XXX.payplatform.test.*=INFO, console
log4j.additivity.com.XXX.payplatform.test.*=false

所以,好吧,WARN级别信息正在log4j.log文件中注册。没关系。

但是,我希望在我的eclipse控制台中看到INFO级别的消息,但我没有得到任何响应。

任何解决方案?我认为问题出在"WARN, file" rootLogger配置中,所以我尝试了这个:

# Global logging configuration
log4j.rootLogger=INFO, file

但没有变化......

谢谢!

1 个答案:

答案 0 :(得分:0)

阅读更多Apache log4j 1.2 - Short introduction to log4j并查找样本。

级别继承

  

给定记录器C的继承级别等于记录器层次结构中的第一个非空级别,从C开始并在层次结构中向上朝向根记录器继续。

基本选择规则

  

如果p> = q,则启用记录器中级别为p的日志请求(分配或继承,以适当者为准)级别q。

     

此规则是log4j的核心。它假定级别是有序的。对于标准级别,我们有DEBUG<信息<警告<错误<致命的。


应该是这样的。在此处添加console并将默认根日志级别设置为INFO

log4j.rootLogger=INFO, file, console

OR

尝试使用log4j.xml代替log4j.properties。阅读更多Configuring Log4j 2

示例log4j.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{ISO8601} %5p %c{1}:%L - %m%n" />
        </layout>
    </appender>

    <appender name="FILE_LOG" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="/logs/log4j.log" />
        <param name="Append" value="true" />
        <param name="ImmediateFlush" value="true"/>
        <param name="DatePattern" value="'.'dd-MM-yyyy-HH"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{ISO8601} %5p %c{1}:%L - %m%n" />
        </layout>
    </appender> 

    <category name="com.XXX.payplatform.test">
        <priority value="INFO" />
        <appender-ref ref="STDOUT"/>
    </category> 

    <root> 
        <priority value ="ERROR" />
        <appender-ref ref="FILE_LOG" />
    </root>
</log4j:configuration>