Spring 启动应用程序日志级别

Spring Boot application log level

我想更改 Spring 引导应用程序的日志级别,即 运行。

是否可以在运行时更改日志级别?现在我的 jar 本身就有记录器配置。

在应用程序处于 运行 时更改日志级别是底层记录器实现的一部分。

您没有指定您正在使用的记录器实现,所以我假设您正在使用通过 spring-boot-starter-logging 或 spring-boot-starter- 提供的默认 logback网络依赖项。

从 application.properties 中注释掉所有与记录器相关的配置 例如

#logging.path=logs
#logging.level.org.springframework.web= INFO
#logging.level.=INFO

在类路径的根目录中添加 logback.xml 标签 参见 http://logback.qos.ch/manual/jmxConfig.html

启动应用程序并打开 JConsole 并转到 MBean 选项卡。 Select包ch.qos.logback.classic.JMxConfigurator.Under默认定位setLoggerLevel操作 例如org.springframework.web、调试

更改将立即生效。 对于其他记录器库,请参阅 spring 引导用户指南 http://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html 以及图书馆特定信息,例如对于 log4j http://www.sureshpw.com/2012/04/dynamic-logging-with-log4j.html

另一种方法 是在没有 JMX 的情况下重复有关步骤并使用配置观察器

如果您想更改已经 运行 Spring 启动应用程序的日志记录级别,您可以查看 spring-cloud-config。参考: http://cloud.spring.io/spring-cloud-config/:

Spring Cloud Config provides server and client-side support for externalized configuration in a distributed system. With the Config Server you have a central place to manage external properties for applications across all environments.

您可以集中管理配置服务器和当前应用程序中的属性 - applications.properties 文件(检查 bootstrap.properties)为

创建一个条目
spring.application.name=application name

在客户端应用程序中使用 @RefreshScope 注释,您将能够刷新应用程序运行时并查看更新的日志记录级别 属性。

随着 Spring Boot 1.5 的发布,如果您的 Boot 应用程序中有执行器,您可以通过开箱即用的 REST API.

1.5 执行器提供了一个名为 'loggers' 的端点,您可以通过 GET 查看配置,POST 进行运行时更改。

例如

curl -i -X POST -H 'Content-Type: application/json' -d '{"configuredLevel": "DEBUG"}' http://localhost:8080/loggers/org.springframwork