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

标签 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

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

最佳答案

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

我想如果您有 1 个实例,这应该没问题,但如果有多个实例,这可能是一个糟糕的方法。

关于java - 如何在运行时更改 kubernetes 托管服务中 Java slf4j 记录器的日志级别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43912456/

相关文章:

mysql - 尝试连接到托管在 Google Compute Engine Ubuntu VM 上的 SQL 服务器时如何解决此错误

java - 使用 JAXB/XJC 插件时出现无法识别的参数 -XsomePlugin 错误

java - 为了避免异常,请禁用 SerializationFeature.FAIL_ON_EMPTY_BEANS)

java - 如何转换spring-boot请求参数

github - 自动将 GitHub 镜像到 GCP 源存储库?

tensorflow - Tensorflow 服务的批量预测问题

java - 我收到了我认为是数组的语法错误,不知道它想要修复什么

java - Eclipse中的serialVersionUID生成是否使用serialver?

java.text.ParseException : Unparseable date Convert String to Timestamp

java - Spring - 服务中构造函数的错误参数 0 需要找不到类型为 Configuration 的 bean