[英]How to change log4j2 pattern in a running application
我正在寻找一种可能性来改变已经运行的应用程序中的log4j2日期格式。 我需要一个用户可以在不同语言之间进行选择的客户端。 根据他的选择,我想更改当前(仅作为示例)配置为的模式(布局)
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n" />
</Console>
有人有提示/线索如何做到这一点? 我找不到任何资源,因为log4j 1主要用于....
我不确定这是正确的方法,因为API目前可能缺少此选项,但它适用于我:
XML:
<Configuration status="WARN">
<Appenders>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="debug">
<AppenderRef ref="console"/>
</Root>
</Loggers>
</Configuration>
Java的:
logger.info("hey!");
LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
Configuration conf = ctx.getConfiguration();
Appender console = conf.getAppenders().get("console"); // <-- your appender name
PatternLayout layout = (PatternLayout) console.getLayout();
layout.setConversionPattern("%d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n");
ctx.updateLoggers(conf);
logger.info("hey!");
结果:
14:02:00.343 [main] INFO test.Log4j2Sample - hey!
14:02:00 [main] INFO test.Log4j2Sample - hey!
Log4j 2具有该配置属性
log4j2.xml:
<Configuration monitorInterval="5">
...
</Configuration>
log4j 2会在每个monitorInterval秒自动重新读取整个配置
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.