2

尝试使用 values.yml 获取 log4j2 部分形式,toYaml但它不保留顺序。

log4j2.yml: |-
{{ toYaml .Values.log4j2 | indent 4 }}

输出-

log4j2:
  Configuration:
    Appenders:
      Console:
        Filters:
          DuplicateLogFilter:
            ttlInSeconds: 60
          MarkerFilter:
            marker: TRACE
            onMatch: ACCEPT
            onMismatch: NEUTRAL
        PatternLayout:
          pattern: '%-5p | %d{yyyy-MM-dd HH:mm:ss,SSS} | [%t] [%X{AD.requestGUID}] [%X{trace.id}]
          %x %c{1.}:%L - %m%n'
        name: CONSOLE
        target: SYSTEM_OUT
    monitorInterval: 300
    shutdownHook: disable

预期产出-

log4j2:
  Configuration:
    monitorInterval: 300
    shutdownHook: disable
    Appenders:
      Console:
        name: CONSOLE
        target: SYSTEM_OUT
        Filters:
          MarkerFilter:
            marker: TRACE
            onMatch: ACCEPT
            onMismatch: NEUTRAL
          DuplicateLogFilter:
            ttlInSeconds: 60
        PatternLayout:
          pattern: "%-5p | %d{yyyy-MM-dd HH:mm:ss,SSS} | [%t] [%X{AD.requestGUID}] [%X{trace.id}] %x %c{1.}:%L - %m%n"
4

1 回答 1

1

值文件被解析为映射(或字典,如果您愿意),并且通常不需要映射结构来保留字段顺序。所以你的问题不是toYaml函数本身的问题,而是将 log4j 配置放在values.yaml.

您可以做的是将 log4j 配置移动到单独的 log4j2.yml 文件中(在图表的根目录中),并将其作为原始文件包含在内:

log4j2.yml: |-
  {{- .Files.Get "log4j2.yml" | nindent 10 }}

(相应地调整缩进)

于 2020-10-14T13:28:40.643 回答