在Log4J2 YAML中使用属性

时间:2016-03-18 04:44:09

标签: yaml log4j2

我正在尝试在log4j2.yaml中使用属性。等效的XML就是这个。

{{ action('MyController@show', $val->id) }}

我试过了。

<Configuration>
<Properties>
    <Property name="log-path">logs</Property>
    <Property name="archive">${log-path}/archive</Property>
</Properties>
<Appenders>
. . .

但是这些属性并没有被选中。例如,以下代码创建 $ {log-path} 文件夹来存储日志文件,而不是所需的日志文件夹。

Configutation:
  name: Default
  properties:
    property:
      name: log-path
      value: "logs"
      name: archive
      value: ${log-path}/archive
  Appenders:

我做错了什么?

1 个答案:

答案 0 :(得分:4)

如果查看log4j2.json文件,您可以看到property键必须具有一个(再次)键值对列表的值。转换为YAML,这看起来像这个文件的开头:

configuration:
  name: Default
  properties:
    property:
    - name: log-path
      value: logs
    - name: archive
      value: ${log-path}/archive
  appenders:
    Console:
      PatternLayout:
        pattern: '[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n'
      name: Console-Appender
      target: SYSTEM_OUT
    File:
      PatternLayout:
        pattern: '[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n'
      fileName: ${log-path}/logfile.log
      name: File-Appender
    RollingFile:
      DefaultRolloverStrategy:
        max: '30'
      PatternLayout:
        pattern: '[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n'
      Policies:
        SizeBasedTriggeringPolicy:
          size: 1 KB
      fileName: ${log-path}/rollingfile.log
      filePattern: ${archive}/rollingfile.log.%d{yyyy-MM-dd-hh-mm}.gz
      name: RollingFile-Appender
  loggers:
    logger:
      additivity: 'false'
      appender-ref:
      - level: info
        ref: Console-Appender
      - level: error
        ref: File-Appender
      - level: debug
        ref: RollingFile-Appender
      level: debug
      name: guru.springframework.blog.log4j2json
    root:
      appender-ref:
        ref: Console-Appender
      level: debug

(上面是使用yaml from-json log4j2.json转换的,命令是从ruamel.yaml.cmd安装的

当然可以保证这是有效的,因为有多种方法可以将XML层次结构转换为YAML。但是,解析YAML和JSON的可能性不大。

在加载YAML文件之后,必须通过遍历数据结构来完成${}的扩展,并且不太可能通过以不区分大小写的方式匹配原始映射关键字来完成此操作。 / p>