如何在应用程序运行期间更改log4j设置?
是否可以在应用程序执行期间更改log4j设置?
您可以使用PropertyConfigurator.configureAndWatch使log4j生成一个线程,以定期检查属性文件中的更改。
或者,您可以使用本文中描述的JMX: 使用JMX更改日志记录级别
有办法通过JMX访问Log4j并使用JMX控制台来控制filter,记录器,级别,追加器等……
我在某个地方有一个例子,但我需要修剪它以使它可以理解。 你想要这个吗?
我正在使用:
- Windows 7的
- Apache Tomcat 7.0.34
- log4j 1.2.17
如果你按照下面的步骤自动完成(不需要重启Tomcat)(假设你已经将war文件部署到%CATALINA_HOME%\ webapps并启动了startup.bat ):
- 转到%CATALINA_HOME%\ webapps \ YourApp \ WEB-INF \ classes
-
编辑log4j.properties / log4j.xml并更改记录器级别
例如:
-
log4j.properties:
log4j.rootLogger=INFO, stdout, file
变
log4j.rootLogger=DEBUG, stdout, file
-
的log4j.xml
变
如果在classes文件夹中同时包含这两个文件,则将考虑XML文件(将忽略.properties文件)。
-
-
在0-10秒内,您将能够在Tomcat控制台和%CATALINA_HOME%\ logs \ catalina.yourDate.log中看到以下行:
2015年11月12日下午4:52:49 org.apache.catalina.core.StandardContext重新加载
信息:重新加载具有名称[/ YourApp]的上下文已启动
2015年11月12日下午4:52:50 org.apache.catalina.loader.WebappClassLoader validateJarFile
信息……
2015年11月12日下午4:52:50 org.apache.catalina.core.StandardContext重新加载
信息:已完成名称为[/ YourApp]的重新加载上下文
-
使用该应用程序并查看新的日志记录级别(在控制台和/或日志记录文件中)。