登录Log4j2 NoSQL MongoDB Appender前如何修改MongoDB文档?

问题描述 投票:0回答:1

我使用 Log4j2 和 MongoDB NoSQL 附加程序将日志发送到 MongoDB 数据库。附加器工作正常,日志作为文档存储在 MongoDB 中。但是,我想在将文档保存到数据库之前对其进行修改(例如,添加、删除或更改字段)。

我尝试过使用PatternLayout和JsonLayout,但我无法根据需要修改文档。这是我当前 log4j2.xml 配置的简化版本:

<Appenders>
    <NoSql name="mongoDbAppender">
        <MongoDb4 connection="${spring:mongo.connection.string} />
        <JsonLayout complete="false" compact="true">
            <KeyValuePair key="testField" value="testValue" />
        </JsonLayout>
    </NoSql>
</Appenders>

使用此键值对似乎没有添加到文档中。

有没有办法在日志文档发送到 MongoDB 之前拦截或修改它?我想自定义日志文档,超出布局配置提供的范围。关于如何实现这一目标有任何指示或建议吗?

任何帮助或示例将不胜感激。

mongodb log4j2 cas
1个回答
0
投票

NoSQL Appender Formatting中所述,有两种方法可以修改记录的NoSQL文档的结构:

  • 您可以使用返回

    MapMessage
    的布局。大多数布局(包括
    JsonLayout
    )都会返回
    String
    ,因此您无法使用它们。

  • 您可以直接在 KeyValuePair

     元素中添加单个字段作为 
    嵌套 <NoSQL>
     元素
    。 “value”属性支持运行时属性替换:

    <Appenders>
      <NoSql name="mongoDbAppender">
        <MongoDb4 connection="${spring:mongo.connection.string}"/>
        <KeyValuePair key="testField" value="testValue"/>
        <KeyValuePair key="date" value="$${date:yyyy-mm-dd}"/>
      </NoSql>
    </Appenders>
    
© www.soinside.com 2019 - 2024. All rights reserved.