我正在使用log4j2
并尝试在运行时更改日志级别。我看过其他类似的帖子here和here,但仍然无法让它发挥作用
这是我的代码:
public static void main(String[] args)
{
Logger log = LogManager.getLogger(LogManager.getLogger(Main.class.getName()).getName());
LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
Configuration config = ctx.getConfiguration();
LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.getLogger(Main.class.getName()).getName());
loggerConfig.setLevel(Level.DEBUG);
ctx.updateLoggers(config);
log.trace("trace");
log.debug("debug");
log.info("info");
loggerConfig.setLevel(Level.TRACE);
ctx.updateLoggers(config);
log.trace("trace");
log.debug("debug");
log.info("info");
}
}
配置文件中的日志级别设置为INFO
。控制台输出是:
info
info
更新
我意识到日志级别 在日志文件中成功更改,但未在控制台中更改。
以下是配置文件中的一个片段,以防它有用:
<Configuration status="info">
<Loggers>
<Root level="debug">
<AppenderRef ref="Console" level="INFO" />
<AppenderRef ref="LogFile" />
</Root>
</Loggers>
答案 0 :(得分:0)
appender上的属性级别是appender的过滤器:此appender不考虑所有较低级别的日志,但它不是记录器的级别
删除控制台appender上的过滤器,只保留记录器上的级别才能正常工作