Logback有一个功能,可以扫描logback.xml中的变化(按 这个)--这是一个很好的功能,它可以让长期运行的应用在出厂时将INFO作为默认级别,当有事情需要简单调查时,可以将其改为DEBUG。
但在我最近的应用中(以Docker容器的形式托管在我公司的K8s集群上),无法使用上述功能,因为:1:
有鉴于此,我是否可以建立一个规定,让开发人员在运行时改变应用程序的日志级别,而无需重新启动appcontainer?
我有一个类似的问题:我需要在运行时改变应用程序的日志级别,而不需要重新启动spring boot应用程序。在我的情况下,我不是在docker上下文中工作,但我认为我们问题的解决方案是一样的。
经过研究,我发现了三种可能的解决方案。
如果你的应用是Spring Boot应用,那么这3种解决方案是最好的。你可以阅读以下教程 在运行时更改日志级别.
你可以找到一个例子,如何启用管理界面上的 Github.
我不确定你是否也被禁止将configmap挂载到容器中,因为你没有提到它。但万一你没有被禁止,你可以创建一个configmap。
apiVersion: v1
kind: ConfigMap
metadata:
name: logback-conf
data:
logback.xml: |
<configuration>
<root level="debug">
<appender-ref ref="STDOUT" />
</root>
</configuration>
然后添加到容器中,如下所示。
containers:
- name: app
volumeMounts:
- name: config
# The conf will be mounted at /app/logback.xml
mountPath: /app
...
volumes:
- name: config
configMap:
name: logback-conf
如果你不允许注入configmap(据我所知,这不会导致宕机),那你就没办法了: