【问题标题】:Excluding only one level of Log4j Logger只排除一级 Log4j Logger
【发布时间】:2012-03-06 12:32:13
【问题描述】:

我在一个应用程序中使用 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 消息。

【问题讨论】:

  • 我不明白这个问题。尝试通过示例扩展您想要的内容。

标签: java log4j logging


【解决方案1】:

否,将 Root 级别设置为 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>

【讨论】:

  • 谢谢。这解决了我的问题。我会在我的待办事项列表中列出它正在迁移到 XML 格式。
【解决方案2】:

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

【讨论】:

  • 那么我会有两个文件吗?一个是我的课程,另一个是其他的包?
【解决方案3】:

使用它你可以设置你的日志级别:

    import org.apache.log4j.Level;

    public static Logger logger = null;

    logger.setLevel(Level.DEBUG);

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

【讨论】:

  • 因为我没有以编程方式使用 Log4J,所以这不能解决我的问题。
猜你喜欢
  • 2012-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-01
相关资源
最近更新 更多