如何在 SLF4j 或 Log4J 中动态更改日志级别
最近,我遇到了应用程序动态变化的情况。应用程序管理员可以将其设置为从前端。根据所选的日志级别,必须更改应用程序日志记录。Loglevel
INFO/DEBUG/ WARN
我确信记录器支持这种情况。我怎样才能做到这一点?
最近,我遇到了应用程序动态变化的情况。应用程序管理员可以将其设置为从前端。根据所选的日志级别,必须更改应用程序日志记录。Loglevel
INFO/DEBUG/ WARN
我确信记录器支持这种情况。我怎样才能做到这一点?
在 slf4j 中无法动态更改日志级别,但 slf4j 的一些后端支持它,包括 log4j。
这个解决方案对我有用:
org.apache.log4j.Logger logger4j = org.apache.log4j.Logger.getRootLogger();
logger4j.setLevel(org.apache.log4j.Level.toLevel("ERROR"));
此解决方案的缺点是它直接使用后端,这在使用 slf4j 时不应该这样做,因为 slf4j 的要点是提供远离您正在使用的特定后端的抽象。
考虑Logback http://logback.qos.ch/ - “流行的log4j项目的继承者,从log4j离开的地方开始”。如果指示这样做,logback-classic 将扫描其配置文件中的更改,并在配置文件更改时自动重新配置自身。此外,您可以使用JMX控制Logback的日志记录级别。