根据官方资源,日志配置依赖于application.properties文件。
现在,我需要根据所使用的集群进行一些配置(假设我们有典型的dev、staging和production环境,因此dev至少应该有一个调试级别和production信息)。
起初我认为使用kubernetes配置Map,但我看不到与quarkus日志记录有任何联系。
如何解决这个问题?
编辑:
这是我的Map
kind: ConfigMap
apiVersion: v1
metadata:
name: kube-cm-config-map
namespace: default
uid: d992d86f-c247-471d-8e31-53e9a1858b76
resourceVersion: '8484'
creationTimestamp: '2021-04-22T13:12:43Z'
managedFields:
- manager: kubectl-create
operation: Update
apiVersion: v1
time: '2021-04-22T13:12:43Z'
fieldsType: FieldsV1
fieldsV1:
'f:data':
.: {}
'f:myenv': {}
'f:myname': {}
- manager: kubectl-edit
operation: Update
apiVersion: v1
time: '2021-04-22T16:52:18Z'
fieldsType: FieldsV1
fieldsV1:
'f:data':
'f:log.file.level': {}
- manager: dashboard
operation: Update
apiVersion: v1
time: '2021-04-23T08:03:06Z'
fieldsType: FieldsV1
fieldsV1:
'f:data':
'f:quarkus.log.file.level': {}
data:
log.file.level: DEBUG
myenv: cl1
myname: cluster1
quarkus.log.file.level: DEBUG
2条答案
按热度按时间nimxete21#
有两种方法可以使用
ConfigMap
在quarkus中读取运行时配置。第一个是让quarkus使用
quarkus-kubernetes-config
这里描述的扩展。配置kubernetes的第二种方法
Deployment
转向ConfigMap
值转换为pod的环境变量。这可以通过quarkus-kubernetes
这里描述的扩展。因此您将在configmap中添加正确的quarkus日志记录配置(即一个键值对),然后在运行时使用上面的方法之一使用它
g6ll5ycj2#
如果您使用kubernetes resource yaml部署应用程序,请使用下面的代码段将自定义configmap作为环境变量推送到应用程序(https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#configure-all-key-value-pairs-in-a-configmap-as-container-environment-variables(所有密钥-值对-在-a-configmap-as-container-environment中):
为每个环境使用不同的configmap,但名称相同。如果您的环境(dev/qa/etc)是kubernetes名称空间,那么很容易设置。只需在每个命名空间中复制configmap,并更改每个命名空间中的日志级别值。
另外,更改configmap属性的命名约定
log.file.level
至LOG_FILE_LEVEL
看到了吗https://quarkus.io/guides/config-reference#environment_variables