【问题标题】:log4j2 converstion to Ecslayout and maskinglog4j2 转换为 Ecslayout 和屏蔽
【发布时间】:2023-02-11 19:55:01
【问题描述】:

目前敏感字段的日志屏蔽使用 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 的参数是什么?

【问题讨论】:

    标签: elasticsearch log4j log4j2


    【解决方案1】:

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

    EcsLayout 不能利用模式转换器,但通用的 JSON Template Layout 可以。您只需要复制 embedded EcsLayout.json template 并将“消息”的定义替换为:

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

    【讨论】:

      【解决方案2】:

      您能否分享用于屏蔽 log4j2 中敏感字段的方法

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-27
        • 2019-04-27
        • 2023-03-21
        • 1970-01-01
        • 2021-10-07
        相关资源
        最近更新 更多