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

时间:2017-05-11 10:09:36

标签: java spring-boot google-cloud-platform kubernetes slf4j

我在google 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文件重新启动容器)以更改日志级别。如果我与一个"常规"运行常规war文件的tomcat服务器,它可以将文件监视放到logback.xml文件中,此文件中的更改将对日志记录生效,而无需重新启动tomcat。在kubernetes托管的Spring启动服务中是否有类似的方法来控制运行时的日志级别?

2 个答案:

答案 0 :(得分:0)

您是否尝试过使用logger endpoint?在spring-boot 1.5中引入

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

答案 1 :(得分:0)

如果你使用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