log4j2转换到Ecslayout和屏蔽



目前使用log4j2对敏感字段进行日志屏蔽工作正常,现在我想将日志格式更改为ecs。所以我在log4j2.xml和EcsLayout标签中做了如下更改:

<Configuration xmlns="http://logging.apache.org/log4j/2.0/config" status="OFF"
packages="com.usbank.digitalservices.common.log.mask">
<Properties>
<Property name="base.log.dir">./logs</Property>
<Property name="appenderPatternLayout">%d{yyyy-MM-dd'T'HH:mm:ss.SSS'Z'} %-5p %-15c{1} [%X]: %spi%n</Property>
<Property name="maxLogFileSize">10 MB</Property>
<Property name="maxLogFiles">2</Property>
</Properties>
<Appenders>
<Console name="CONSOLELOG" target="SYSTEM_OUT" follow="true">
<!--  <PatternLayout pattern="${appenderPatternLayout}"/> -->
**<EcsLayout stackTraceAsArray="true"  serviceName="my-api"/>** 
</Console> 

现在日志被正确转换为json,但屏蔽不工作,我的意思是appenderPatternLayout/spi不工作。

任何关于如何屏蔽EcsLayout的建议,什么可以是appenderPatternLayout的参数?

您正在使用的%spi模式显然是由com.usbank.digitalservices.common.log.mask的私有Log4j2插件提供的。

EcsLayout不能利用模式转换器,但通用的JSON模板布局可以。您只需要复制嵌入的EcsLayout.json模板并替换"message":

"message": {
"$resolver": "pattern",
"pattern": "%spi",
"stackTraceEnabled": false
}

最新更新