是否可以在应用程序执行期间更改log4j设置?
答案 0 :(得分:9)
您可以使用PropertyConfigurator.configureAndWatch使log4j生成一个线程,以定期检查属性文件中的更改。
或者,您可以使用此帖中描述的JMX:Change Logging Levels using JMX
答案 1 :(得分:3)
通过JMX可以访问Log4j并使用JMX控制台来控制过滤器,记录器,级别,追加器等,可以做到这一点......
我在某个地方有一个例子,但我需要修剪一下以使其易于理解。你想要这个吗?
答案 2 :(得分:2)
我正在使用:
如果你按照下面的步骤完成自动(不需要重启Tomcat)(假设你已经将war文件部署到%CATALINA_HOME%\ webapps并且您已启动 startup.bat ):
修改 log4j.properties / log4j.xml 并更改记录器级别
E.g:
log4j.properties:
log4j.rootLogger=INFO, stdout, file
变为
log4j.rootLogger=DEBUG, stdout, file
的log4j.xml
<root>
<level value="INFO" />
<appender-ref ref="console" />
<appender-ref ref="file" />
</root>
变为
<root>
<level value="DEBUG" />
<appender-ref ref="console" />
<appender-ref ref="file" />
</root>
如果classes文件夹中有这两个文件,则会考虑XML文件(将忽略.properties文件)。
在0-10秒内,您将能够在 Tomcat控制台和%CATALINA_HOME%\ logs \ catalina.yourDate.log中看到以下行:
2015年11月12日下午4:52:49 org.apache.catalina.core.StandardContext reload
INFO:重新加载具有名称[/ YourApp]的上下文
2015年11月12日下午4:52:50 org.apache.catalina.loader.WebappClassLoader validateJarFile
信息......
2015年11月12日下午4:52:50 org.apache.catalina.core.StandardContext reload
INFO:已完成名称[/ YourApp]的重新加载上下文
使用该应用程序并查看新的日志记录级别(在控制台和/或日志记录文件中)。