首页 > 解决方案 > 如何在运行时更改日志级别而不重新启动 Vert.x 应用程序

问题描述

我知道我们可以通过将它放在 vertx-default-jul-logging.properties 文件中来更改日志级别。

java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.ConsoleHandler.level=FINER

java.util.logging.FileHandler.limit=10000000
java.util.logging.FileHandler.count=10
java.util.logging.FileHandler.level=FINER
java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter

但是当我们更改此文件中的日志级别时,我需要重新启动应用程序,因为它是使用应用程序构建的。有什么方法可以在不重新启动应用程序的情况下更改日志级别,就像我们可以通过 jboss cli 在 jboss 中所做的那样。

标签: javaloggingvert.x

解决方案


此文件不必与应用程序一起构建。它只需要在类路径上。

但无论如何,我不相信 JDK 日志记录支持配置文件的热重载。不过,还有其他日志记录工具可以做到。就像Logback-classic一样。

Logback-classic 可以扫描其配置文件中的更改,并在配置文件更改时自动重新配置自己。

例如,每五秒重新加载一次:

<configuration scan="true" scanPeriod="5 seconds" > 
  ...
</configuration> 

Vert.x 可以配置为使用不同的日志框架。为此,您必须设置vertx.logger-delegate-factory-class-name系统属性。由于Logback-classic是一个slf4j实现,您需要:

-Dvertx.logger-delegate-factory-class-name=io.vertx.core.logging.SLF4JLogDelegateFactory

推荐阅读