如何使用Log4j更改软件包的日志级别?
我遇到了以下错误:
http://issues.apache.org/jira/browse/AXIS2-4363
它声明如下:
只有在org.apache.axiom的日志级别是DEBUG时才会出现此错误,因此解决方法是设置日志级别> DEBUG。
我的问题是如何去做呢? 我一直在search一个属性文件或我的目录,我一直在寻找是否有什么我可以在代码中设置,但我真的不知道我在做什么。 我正在桌面上运行一个控制台应用程序,同时试图使其工作。
更新1:我注意到我的Axis2目录在其根目录中有自己的log4j.properties文件。 这是安全的忽略还是解决scheme的一部分(或问题的一部分)?
更新2:根级别log4j.properties文件apprently设置不正确。 现在看起来像这样:
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);
你正在使用哪个应用服务器? 每个人都把它的日志configuration放在不同的地方,尽pipe大多数现在都使用Commons-Logging作为Log4J或java.util.logging的包装。
以Tomcat为例, 本文档解释了使用任一选项configuration日志logging的选项。 在任何一种情况下,您都需要find或创build一个configuration文件来定义每个包的日志级别,并且每个日志logging系统将输出日志信息(通常是控制台,文件或数据库)。
在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
但是,如果你仍然想从自己的类中输出自己的DEBUG级别的输出,可以添加一行:
log4j.category.com.mypackage=DEBUG
在Log4J和Commons-Logging上阅读一下会帮助你理解这一切。
我今天遇到了同样的问题,Ryan。
在我的src (或你的根目录)目录中,我的log4j.properties文件现在有以下的增加
# https://issues.apache.org/jira/browse/AXIS2-4363 log4j.category.org.apache.axiom=WARN
本杰明,谢谢你们如何做到这一点。
这为我的工作:
log4j.logger.org.hibernate.type=trace
也可以试试:
log4j.category.org.hibernate.type=trace
我刚刚遇到了这个问题,无法弄清楚什么是错误的,甚至在阅读了上述所有内容之后, 我做的是
- 将根logging器级别设置为WARN
- 将软件包日志级别设置为DEBUG
每个日志logging的实现都有自己的方式来设置它通过属性或通过代码(可用的很多帮助)
无论以上所有我不会在我的控制台或我的日志文件的日志。 我忽略的是以下…
我所做的只是上面的图像中的红线左侧的日志(根目录/包/类等)的生产。 但是我并没有改变上图中红色线的显示/消耗日志的方式。 处理程序(消费)通常在INFO默认,因此您的宝贵debugging声明不会通过。 消费/显示是通过设置处理程序(ConsoleHandler / FileHandler等)的日志级别来控制的。因此,我继续设置所有处理程序的日志级别,使其最好,一切正常。
这一点在任何地方都没有明确的表述。
我希望有人挠头,想为什么这些属性不工作会发现这有点帮助。
设置系统属性log4j.debug = true。 然后你可以确定你的configuration在哪里运行。