我正在尝试在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:
我做错了什么?
答案 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>