【问题标题】:How to change log level on a Java slf4j logger in a kubernetes managed service in runtime?如何在运行时更改 kubernetes 托管服务中 Java slf4j 记录器的日志级别?
【发布时间】:2017-05-11 10:09:36
【问题描述】:

我有一个在谷歌 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 Boot 服务中是否有类似的方法来控制运行时的日志级别?

【问题讨论】:

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


【解决方案1】:

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

如果你有 1 个实例,我想这会没问题,但如果有多个,这可能是一个不好的方法。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-11
      • 2021-01-30
      • 2015-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多