仅排除一级Log4j Logger

时间:2012-03-06 12:32:13

标签: java log4j logging

我在一个应用程序中使用Log4j,我也使用Axis2和Jetty Web服务器。

我配置了Log4J属性文件,以便在调试优先级时排除这些类的日志记录。但是当我这样做时,其他优先级消息也开始被排除在主记录器之外。

我是否有办法告诉Log4j我只想在从我的类中记录调试日志时从这些类中记录INFO日志?

这就是我所做的:

#Jetty Server and Axis2
log4j.category.org.apache.axiom=DEBUG
log4j.additivity.org.apache.axiom=false
log4j.category.org.apache.axis2=DEBUG
log4j.additivity.org.apache.axis2=false

################# MAIN LOGGER #################
log4j.rootCategory=DEBUG, mainLogger

#File configuration

但正如我所说,此配置还会从主记录器中排除INFO消息。

3 个答案:

答案 0 :(得分:4)

不,将根级别设置为DEBUG,然后

log4j.category.org.apache.axiom=INFO
log4j.category.org.apache.axis2=INFO

另外,请勿将加法设置为false

当您从头开始时,您可能希望立即使用更现代的XML配置格式。在那里,它看起来像这样:

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

<appender name="FILE" class="org.apache.log4j.RollingFileAppender"> 
...
</appender> 

<category name="com.apache.axiom">
    <priority value="INFO" />
</category>

<root> 
    <priority value ="DEBUG" /> 
    <appender-ref ref="FILE" /> 
</root>

</log4j:configuration>

答案 1 :(得分:0)

将根类别设置为INFO,将类的相应记录器(例如org.myemployer.myapp)设置为DEBUG

答案 2 :(得分:-1)

使用此功能,您可以设置日志级别:

    import org.apache.log4j.Level;

    public static Logger logger = null;

    logger.setLevel(Level.DEBUG);

 Logger.getRootLogger().setLevel(Level.INFO);