You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Log4j2.yml配置文件多属性变量声明问题求助

Log4j2 YAML 多属性变量正确配置方法

直接给你正确的多属性声明写法,核心是用数组形式定义多个property,严格遵守YAML缩进规则:

Configuration:
  status: warn
  name: DefaultConfig
  # 多属性变量必须用数组形式声明
  properties:
    property:
      - name: log-path
        value: /var/work/logs/my-service
      - name: log-name
        value: my-service
  Appenders:
    RollingFile:
      - name: RollingFileAppender
        # 直接使用变量即可正常解析
        fileName: "${log-path}/${log-name}.log"
        filePattern: "${log-path}/${log-name}-%d{yyyy-MM-dd}-%i.log.gz"
        PatternLayout:
          pattern: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"
        Policies:
          SizeBasedTriggeringPolicy:
            size: 10MB
        DefaultRolloverStrategy:
          max: 10
  Loggers:
    Root:
      level: info
      AppenderRef:
        ref: RollingFileAppender

常见错误写法(别踩坑)

很多人会把多个属性写成平级键值对,导致YAML解析时覆盖重复键,Log4j2无法识别多个变量:

# 错误写法:重复的name/value会被覆盖,仅最后一个属性生效
Configuration:
  properties:
    property:
      name: log-path
      value: /var/work/logs/my-service
      name: log-name
      value: my-service

原理说明

Log4j2对YAML配置的properties节点有明确要求:单个属性可以用单键值对,多个属性必须用数组列表(每个元素是独立的property对象),这样Log4j2才能正确加载所有变量并完成替换。

内容的提问来源于stack exchange,提问作者Trong Nghia Vu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 17:52:37