使用log4j2yaml中的属性
我试图在log4j2.yaml中使用属性。等价的XML是这样的使用log4j2yaml中的属性,yaml,log4j2,Yaml,Log4j2,我试图在log4j2.yaml中使用属性。等价的XML是这样的 <Configuration> <Properties> <Property name="log-path">logs</Property> <Property name="archive">${log-path}/archive</Property> </Properties> <Appenders> . . . 但这
<Configuration>
<Properties>
<Property name="log-path">logs</Property>
<Property name="archive">${log-path}/archive</Property>
</Properties>
<Appenders>
. . .
但这些房产并没有被挑选出来。例如,以下代码创建一个${log path}文件夹来存储日志文件,而不是所需的日志文件夹
fileName: ${log-path}/rollingfile.log
我做错了什么?如果查看log4j2.json文件,您可以看到
属性
键必须具有一个值,该值是(再次)键-值对列表。已翻译为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
(上面的代码是使用json log4j2.json中的yaml进行转换的,命令是从
当然,这是可以保证的,因为有多种方法可以将XML层次结构转换为YAML,但YAML和JSON的解析不太可能有什么不同
${}的扩展
必须在加载YAML文件后,通过遍历数据结构来完成,而这不太可能通过不区分大小写的方式匹配原始映射键来完成。如果我只有一个名称/值对,事情就会成功。但是,在添加第二个名称/值对时,问题再次出现。我在使用JSON和JSON ar时遇到了类似的问题ray就是解决方案。@user2693135我以前没有注意到:YAML中的映射不能有相同的键。我用一个可能的解决方案更新了我的答案。你能用一个JSON版本示例(使用数组)更新你的帖子吗?@user2693135的结构与我猜测的略有不同。我更新了我的答案,在YAML中使用与JSON文件中相同的结构YAML数组sux:(谢谢你的回答,它帮助了我
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