如何在运行时更改 kubernetes 托管服务中 Java slf4j 记录器的日志级别



我有一个在谷歌 kubernetes 托管容器引擎中运行的 spring boot java 服务。Java 服务日志通过 slf4j api(日志转发到 google stackdriver,但这不在这个问题的讨论范围内(。

我可以通过更改 kubernetes 部署文件来更改日志记录级别:

spec:
  template:
    spec:
      containers:
        env:
        - name: JAVA_OPTS
          value: -Xmx1g -Dlogging.level.com.example=DEBUG

这有效,但它需要我重新部署服务(通过应用更新的deloyment yaml文件重新启动容器(以更改日志级别。如果我与使用运行常规战争文件的"常规"tomcat 服务器进行比较,它可以将文件监视放在logback.xml文件上,并且该文件中的更改会在日志记录上生效,而无需重新启动 tomcat。在 kubernetes 管理的 Spring 启动服务中,是否有类似的方法来控制运行时中的日志级别?

您是否尝试过使用记录器端点? 在 spring-boot 1.5 中引入

我想如果你有 1 个实例,这没关系,但如果有多个实例,这可能是一个糟糕的方法。

如果你使用 Spring Boot Admin,从 Codecentric (https://github.com/codecentric/spring-boot-admin(,你可以通过 JMX/Jolokia 在运行时修改日志级别。

您还可以实现"Spring Cloud Bus",它可以在将更改提交到配置管理系统 (git( 后推送配置更改并刷新应用程序上下文。

http://cloud.spring.io/spring-cloud-static/springcloud.html#_push_notifications_and_spring_cloud_bus

最新更新