排除Log4j Logger中的一个级别

4

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

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

有没有办法告诉Log4j,我只想从这些类记录INFO日志,而从我的类记录debug日志?

以下是我的做法:

#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消息。


我不理解这个问题。请尝试举例说明您想要什么。 - skaffman
3个回答

4
不,将根级别设置为DEBUG,然后
log4j.category.org.apache.axiom=INFO
log4j.category.org.apache.axis2=INFO

另外,不要将additivity设置为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>

谢谢。那解决了我的问题。我会把它迁移到XML格式的任务列表中。 - lcguida

0

将rootCategory设置为INFO,将您的类(例如org.myemployer.myapp)的适当记录器设置为DEBUG


那我会有两个文件吗?一个是我的类,另一个是其他包? - lcguida

-1

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

    import org.apache.log4j.Level;

    public static Logger logger = null;

    logger.setLevel(Level.DEBUG);

并且

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

由于我没有在程序中使用Log4J,这并不能解决我的问题。 - lcguida

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接