最近遇到一个应用 Loglevel
动态变化的情况。应用程序管理员可以从前端将其设置为 INFO/DEBUG/ WARN
。根据选择的日志级别,必须更改应用程序日志记录。
我确信记录器支持这种情况。我怎样才能做到这一点?
原文由 Narendra 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 slf4j 中无法动态更改日志级别,但 slf4j 的一些后端支持它,包括 log4j。
这个解决方案对我有用:
org.apache.log4j.Logger logger4j = org.apache.log4j.Logger.getRootLogger();
logger4j.setLevel(org.apache.log4j.Level.toLevel("ERROR"));
(来源:http: //prateep.info/2015/12/12/Dynamically-change-log-level-in-SLF4j-Log4J-with-Standalone-Java-Class/ )
此解决方案的缺点是它直接使用后端,在使用 slf4j 时不应该这样做,因为 slf4j 的要点是提供远离您正在使用的特定后端的抽象。
原文由 outofthecave 发布,翻译遵循 CC BY-SA 3.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
考虑 Logback http://logback.qos.ch/ - “流行的 log4j 项目的继任者,从 log4j 离开的地方接手”。如果指示这样做,logback-classic 将扫描其配置文件中的更改,并在配置文件更改时自动重新配置自身。此外,您可以使用 JMX 控制 Logback 的日志记录级别。