2009-11-12 110 views
52

我遇到了以下错误:如何使用Log4j更改软件包的日志级别?

http://issues.apache.org/jira/browse/AXIS2-4363

它规定如下:

只有当org.apache.axiom日志级别 是DEBUG所以 解决方法出现此错误是设置日志级别> DEBUG。

我的问题是如何去做这件事?我一直在为我的目录搜索一个属性文件或其他东西,我一直在寻找是否有我可以在代码中设置的东西,但我真的不知道我在做什么。我正在桌面上运行一个控制台应用程序,同时尝试使其工作。

更新1:我注意到我的Axis2目录在其根目录中有它自己的log4j.properties文件。这是安全的忽略还是它是解决方案的一部分(或问题的一部分)?

更新2:根级别log4j.properties文件设置不正确。现在它看起来是这样的:

log4j.rootLogger=DEBUG, R 
log4j.logger.org.apache.axiom=WARN 
log4j.appender.R=org.apache.log4j.RollingFileAppender 
log4j.appender.R.MaxFileSize=10MB 
log4j.appender.R.MaxBackupIndex=10 
log4j.appender.R.layout=org.apache.log4j.PatternLayout 
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n 

但这显然是错误的,因为这样的代码返回“日志级别为空”:

System.out.println("Log level is " + logger.getLevel()); 

现在我使用

设置代码中的日志级别
Logger logger = Logger.getLogger("org.apache.axiom"); 
logger.setLevel(Level.WARN); 
+0

我还是有这个问题 - 我添加了一个log4j.properties文件到控制台应用程序的根目录但既不增加 log4j.rootLogger = WARN,R 或 log4j.logger.org.apache.axiom = WARN 似乎可以做任何事情 - 我得到和以前一样的错误。 – 2009-11-13 19:29:18

回答

52

您正在使用哪个应用服务器?每个人都将其日志配置放在不同的地方,尽管现在大多数人使用Commons-Logging作为Log4J或java.util.logging的包装。

以Tomcat为例,this document解释了使用任一选项配置日志记录的选项。无论哪种情况,您都需要查找或创建一个配置文件,以定义每个软件包的日志级别,并且每个日志记录系统将输出日志信息(通常是控制台,文件或db)。

在log4j的情况下,这将是log4j.properties文件,如果你按照你的文件上面的链接方向将开始出去找这样的:

log4j.rootLogger=DEBUG, R 
log4j.appender.R=org.apache.log4j.RollingFileAppender 
log4j.appender.R.File=${catalina.home}/logs/tomcat.log 
log4j.appender.R.MaxFileSize=10MB 
log4j.appender.R.MaxBackupIndex=10 
log4j.appender.R.layout=org.apache.log4j.PatternLayout 
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n 

最简单的是改变线路:

log4j.rootLogger=DEBUG, R 

喜欢的东西:

log4j.rootLogger=WARN, R 

但是,如果你仍然想你的O从你自己的类输出WN DEBUG级别添加一条线,说:

log4j.category.com.mypackage=DEBUG 

读了一下关于Log4JCommons-Logging将帮助你了解这一切。

+0

现在我只是试图运行一些代码作为控制台应用程序。我会看看我是否可以找出log4j.properties文件应该放在哪里。谢谢。 – 2009-11-12 23:34:51

+1

+1良好的信息,谢谢 – 2010-09-23 17:31:57

+3

类别在log4j中被logger弃用 – janwen 2012-04-07 09:17:01

7

我今天遇到了同样的问题,Ryan。

在我SRC(或根)目录,我log4j.properties文件现在具有以下此外

# https://issues.apache.org/jira/browse/AXIS2-4363 
log4j.category.org.apache.axiom=WARN 

感谢抬起头为如何做到这一点,本杰明。

3

这工作我:

log4j.logger.org.hibernate.type=trace 

也可以尝试:

log4j.category.org.hibernate.type=trace 
0

设置系统属性log4j.debug =真。然后你可以确定你的配置在哪里运行。

2

我刚刚遇到问题,无法弄清楚什么是错误的,即使阅读了上述所有内容和所有内容。我所做的是

  1. 设定根记录级别为WARN
  2. 设置包的日志级别进行调试

每个日志实现有它的通过性还是通过代码设置它的自己的路(批号可用的帮助)

无论以上所有我不会在我的控制台或我的日志文件中获取日志。我忽略了是低于...


enter image description here


所有我与前面耍弄这样做是只控制生产日志(在根/包/班等),在上面的图像中的红线左侧。但是我并没有改变上图中红线右侧显示/消耗日志的方式。处理程序(消费)通常在INFO默认,因此您的宝贵调试声明不会通过。消费/显示是通过设置处理程序(ConsoleHandler/FileHandler等)的日志级别来控制的。因此,我继续设置所有处理程序的日志级别,使其最好,并且一切正常。

这一点在任何地方都没有以确切的方式表示清楚。

我希望有人挠头,想为什么这些属性不工作会发现这有点帮助。