简体   繁体   English

log4j2 转换为 Ecslayout 和屏蔽

[英]log4j2 converstion to Ecslayout and masking

Currently log masking for sensitive fields is working fine using log4j2, now I want to change the log format to ecs.目前敏感字段的日志屏蔽使用 log4j2 工作正常,现在我想将日志格式更改为 ecs。 so I made the changes in log4j2.xml and EcsLayout tag as below:所以我在 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> 

Now log is converted to json correctly but the masking is not working i mean appenderPatternLayout /spi not working.现在日志已正确转换为 json 但屏蔽不起作用我的意思是 appenderPatternLayout /spi 不起作用。

any suggestion for how to mask if EcsLayout, what could be parameters for appenderPatternLayout?关于如何屏蔽 EcsLayout 的任何建议,appenderPatternLayout 的参数是什么?

The %spi pattern you are using is clearly provided by a private Log4j2 plugin from com.usbank.digitalservices.common.log.mask .您使用的%spi模式显然是由com.usbank.digitalservices.common.log.mask的私有 Log4j2 插件提供的。

The EcsLayout can not take advantage of pattern converters, but the generic JSON Template Layout can. EcsLayout不能利用模式转换器,但通用JSON 模板布局可以。 You just need to copy the embedded EcsLayout.json template and replace the definition of "message" with:您只需要复制嵌入的EcsLayout.json模板并将“消息”的定义替换为:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM