mha*_*ler 86
Log4j能够查看log4j.xml文件以进行配置更改.如果更改log4j文件,log4j将根据您的更改自动刷新日志级别.有关org.apache.log4j.xml.DOMConfigurator.configureAndWatch(String,long详细信息,请参阅文档).检查之间的默认等待时间为60秒.由于您直接更改文件系统上的配置文件,因此这些更改将是持久的.您需要做的就是调用DOMConfigurator.configureAndWatch()一次.
警告:由于Thread泄漏,configureAndWatch方法在J2EE环境中使用是不安全的
设置日志级别(或通常重新配置)log4j的另一种方法是使用JMX.Log4j将其记录器注册为JMX MBean.使用应用程序服务器MBeanServer控制台(或JDK的jconsole.exe),您可以重新配置每个单独的记录器.这些更改不是持久性的,并且会在重新启动应用程序(服务器)后重置为配置文件中设置的配置.
如Aaron所述,您可以以编程方式设置日志级别.您可以按照自己希望的方式在应用程序中实现它.例如,您可以使用GUI,其中用户或管理员更改日志级别,然后调用setLevel()记录器上的方法.您是否将设置保留在某处取决于您自己.
Aar*_*ver 81
更改日志级别很简单; 修改配置的其他部分将提供更深入的方法.
LogManager.getRootLogger().setLevel(Level.DEBUG);
Run Code Online (Sandbox Code Playgroud)
这些变化是通过生命周期的永久性变化Logger.在重新初始化时,将读取并使用配置,因为在运行时设置级别不会保持级别更改.
更新:如果您使用的是Log4j 2,则应删除setLevel对文档的调用,因为这可以通过实现类来实现.
API不支持调用logger.setLevel()或类似方法.应用程序应删除这些.Log4j 2实现类中提供了等效功能,但可能使应用程序容易受到Log4j 2内部更改的影响.
对于 log4j 2 API ,您可以使用
Logger logger = LogManager.getRootLogger();
Configurator.setAllLevels(logger.getName(), Level.getLevel(level));
Run Code Online (Sandbox Code Playgroud)
可以将Log4j2配置为通过以给定间隔扫描log4j 2 .xml文件(或等效文件)来刷新其配置.只需将" monitorInterval "参数添加到配置标记即可.请参阅示例log4j 2 .xml文件的第2行,该文件告诉log4j在上次日志事件超过5秒后重新扫描其配置.
<?xml version="1.0" encoding="UTF-8" ?>
<Configuration status="warn" monitorInterval="5" name="tryItApp" packages="">
<Appenders>
<RollingFile name="MY_TRY_IT"
fileName="/var/log/tryIt.log"
filePattern="/var/log/tryIt-%i.log.gz">
<Policies>
<SizeBasedTriggeringPolicy size="25 MB"/>
</Policies>
...
</RollingFile>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="MY_TRY_IT"/>
</Root>
</Loggers>
</Configuration>
Run Code Online (Sandbox Code Playgroud)
如果要部署到tomcat实例,IDE内部或使用spring boot,还有其他步骤可以使其工作.这似乎有点超出范围,可能有一个单独的问题.
| 归档时间: |
|
| 查看次数: |
145647 次 |
| 最近记录: |