Java 如何更改软件包';使用Log4j设置日志级别?
我遇到了以下错误: 它声明如下: 此错误仅在日志级别为时发生 对于org.apache.axiom来说,调试是一个 解决方法是设置日志级别> 调试 我的问题是我该怎么做?我一直在搜索我的目录中的属性文件或其他东西,我一直在寻找是否可以在代码中设置一些东西,但我真的不知道我在做什么。我现在正在我的桌面上运行一个控制台应用程序,同时试图让它工作 更新1:我注意到Axis2目录的根目录中有自己的log4j.properties文件。这是否被安全地忽略,还是解决方案的一部分(或问题的一部分) 更新2:根级别log4j.properties文件明显未正确设置。现在看起来是这样的:Java 如何更改软件包';使用Log4j设置日志级别?,java,logging,log4j,axis2,axiom,Java,Logging,Log4j,Axis2,Axiom,我遇到了以下错误: 它声明如下: 此错误仅在日志级别为时发生 对于org.apache.axiom来说,调试是一个 解决方法是设置日志级别> 调试 我的问题是我该怎么做?我一直在搜索我的目录中的属性文件或其他东西,我一直在寻找是否可以在代码中设置一些东西,但我真的不知道我在做什么。我现在正在我的桌面上运行一个控制台应用程序,同时试图让它工作 更新1:我注意到Axis2目录的根目录中有自己的log4j.properties文件。这是否被安全地忽略,还是解决方案的一部分(或问题的一部分) 更新2:
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
但这显然是错误的,因为此代码返回“Log level is null”:
目前,我正在使用
Logger logger = Logger.getLogger("org.apache.axiom");
logger.setLevel(Level.WARN);
您正在使用哪个应用程序服务器?尽管现在大多数人使用Commons日志作为Log4J或java.util.logging的包装器,但每个日志都将其日志配置放在不同的位置 以Tomcat为例,解释了使用任一选项配置日志记录的选项。在这两种情况下,您都需要找到或创建一个配置文件,该文件定义了日志系统将输出日志信息的每个包和每个位置的日志级别(通常是控制台、文件或数据库) 对于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
但是,如果您仍然希望从自己的类中获得自己的调试级别输出,请添加一行内容,说明:
log4j.category.com.mypackage=DEBUG
读一读,会帮助你理解这一切。我今天遇到了完全相同的问题,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
设置系统属性log4j.debug=true。然后,您可以确定您的配置在哪里乱跑。我刚刚遇到了这个问题,即使在阅读了以上所有内容之后,我也无法找出哪里出了问题。我所做的是
我所做的上述杂耍只是控制日志的生成(在root/package/class等位置),在上图中红线的左侧。但我并没有改变显示/消耗相同日志的方式,上图中红线右侧。处理程序(消耗)通常默认为INFO,因此您宝贵的调试语句无法通过。消费/显示是通过设置处理程序(ConsoleHandler/FileHandler等)的日志级别来控制的,因此我继续将所有处理程序的日志级别设置为finest,并且一切正常 这一点在任何地方都没有得到明确的说明
我希望有人挠头,思考为什么属性不起作用,会发现这有点帮助。现在,我只是尝试运行一些代码作为控制台应用程序。我会看看是否能找出log4j.properties文件应该放在哪里。Thank.category在log4j中被弃用,loggerAs是log4j文档中的一个重要注释:“这一观察结果曾导致我们选择类别作为一揽子计划的核心概念。然而,自log4j版本1.2以来,Logger类已经取代了Category类。对于那些熟悉log4j早期版本的人来说,Logger类可以被认为仅仅是Category类的别名。“我仍然有这个问题-我已经在控制台应用程序的根目录中添加了log4j.properties文件,但是添加log4j.rootLogger=WARN、R或log4j.logger.org.apache.axiom=WARN似乎没有任何作用-我得到了与以前相同的错误。
log4j.category.org.hibernate.type=trace