如何使用Log4j2 xml重写附加程序在登录文件之前修改LogEvent

维韦克

我想在log4j2.xml文件中使用重写追加程序,以便在记录之前可以修改日志。我没有从Google获得太多帮助。根据log4j2文档,Rewrite是具有重写方法的接口,而MapRewritePolicy是实现类,当我运行它时,我可以看到我的web3.log文件正在生成,但是看不到日志内容的任何修改。我看到了MapRewritePolicy源代码,并在我的项目中将本地实现类创建为MapRewritePolicyImpl.java,并放置了一些System.out来查看代码流从log4j2.xml文件进入此类。我已经修改了log4j2.xml以使用MapRewritePolicyImpl.java,但是代码流没有进入MapRewritePolicyImpl.java类。

<Rewrite name="rewrite" >
            <Appender-Ref ref="web3" />
             <MapRewritePolicyImpl">
                <KeyValuePair key="creditCard" value="new12345"/>
            </MapRewritePolicyImpl> 
        </Rewrite>



    <Configuration monitorInterval="5" status="debug" strict="true">
        <Appenders>
            <RollingFile name="web3" fileName="../logs/web3.log" 
                filePattern="${sys:catalina.home}/logs/$${date:yyyy-MM-dd}/web3-%d{yyyy-MM-dd}-%i.log.gz">
                <PatternLayout
                    pattern="%d{dd/MM/yyyy HH:mm:ss,SSS} [%X{cartID}] [%X{sessionId}] [%p] [%t] [%c] (%F:%L)  - %m%n" />
                <Policies>
                    <TimeBasedTriggeringPolicy interval="1"
                        modulate="true" />
                    <SizeBasedTriggeringPolicy size="10 MB" />

                </Policies>
            </RollingFile>
            <Rewrite name="rewrite" >
                <Appender-Ref ref="web3" />
                 <MapRewritePolicy">
                    <KeyValuePair key="creditCard" value="new12345"/>
                </MapRewritePolicy> 
            </Rewrite>
    </Appenders>
    <Loggers>
        <Logger name="com.virginamerica" level="info" additivity="false">
            <!-- <Appender-Ref ref="web3" /> -->
            <Appender-Ref ref="rewrite"/>
        </Logger>
    </Loggers>
</Configuration>
雷姆波波玛

MapRewritePolicy将评估包含MapMessage的LogEvent,并添加或更新Map的元素。这仅在您的应用程序调用时有效logger.info(new MapMessage(keyValueMap))我怀疑这不是您的应用程序当前正在执行的操作。

通常,您的消息将是SimpleMessage(如果您调用了logger.info("Just a string without parameters"))或ParameterizedMessage(如果您调用了logger.info("Hi {}!", name))。RewriteAppender将无法对SimpleMessage或ParameterizedMessages进行任何操作,因此什么也不会被替换...

您可能想看一下PatternLayout的文档:如果使用replace{pattern}{regex}{substitution}模式,它可以用一些替换值替换字符串消息中的正则表达式

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Log4j2登录关机钩子?

来自分类Dev

使用单个log4j2 xml文件配置log4j2和log4j

来自分类Dev

如何使用log4j2(xml中的MDC)在不同的文件中写入不同的日志?

来自分类Dev

如何使用apache log4j2功能和log4j2配置文件写入CSV文件?

来自分类Dev

使用HashMap登录log4j2的正确方法

来自分类Dev

如何使用pid作为log4j2 Kafka追加程序的密钥?

来自分类Dev

如何将log4j2与不同的日志文件一起使用?

来自分类Dev

log4j2如何将属性变量从文件读取到log4j2

来自分类Dev

如何在使用Eclipse创建的可运行jar中指定外部log4j2配置文件

来自分类Dev

如何使用log4j2将日志保存到带有时间戳的文件中

来自分类Dev

使用log4j2.xml的Apache Log4j2软件包特定的日志记录

来自分类Dev

使用log4j-web.jar在Web应用程序中配置Log4j2

来自分类Dev

使用log4j-web.jar在Web应用程序中配置Log4j2

来自分类Dev

如何用另一个log4j2配置文件覆盖一个log4j2配置文件?

来自分类Dev

使用log4j2登录时aix系统上的编码问题

来自分类Dev

如何为WildFly 9中部署的应用程序设置Log4j2?

来自分类Dev

如何配置log4j2 Web应用程序

来自分类Dev

如何在Web应用程序中查找log4j2的属性参数?

来自分类Dev

如何从JNDI加载log4j2配置文件

来自分类Dev

Log4j2:如何为每个用户将日志写入单独的文件?

来自分类Dev

如何使log4j2每个日志调用记录一个文件?

来自分类Dev

如何在log4j2中指定日志文件

来自分类Dev

如何避免在Log4J2中创建空文件?

来自分类Dev

如何在tomcat中设置log4j2文件夹?

来自分类Dev

log4j2 跳过记录附加信息

来自分类Dev

使用log4j2时日志文件为空

来自分类Dev

使用可执行JAR时指定Log4j2配置文件

来自分类Dev

使用log4j2的多个线程的不同日志文件

来自分类Dev

Log4j2:文件记录无法与jar一起使用

Related 相关文章

  1. 1

    如何使用Log4j2登录关机钩子?

  2. 2

    使用单个log4j2 xml文件配置log4j2和log4j

  3. 3

    如何使用log4j2(xml中的MDC)在不同的文件中写入不同的日志?

  4. 4

    如何使用apache log4j2功能和log4j2配置文件写入CSV文件?

  5. 5

    使用HashMap登录log4j2的正确方法

  6. 6

    如何使用pid作为log4j2 Kafka追加程序的密钥?

  7. 7

    如何将log4j2与不同的日志文件一起使用?

  8. 8

    log4j2如何将属性变量从文件读取到log4j2

  9. 9

    如何在使用Eclipse创建的可运行jar中指定外部log4j2配置文件

  10. 10

    如何使用log4j2将日志保存到带有时间戳的文件中

  11. 11

    使用log4j2.xml的Apache Log4j2软件包特定的日志记录

  12. 12

    使用log4j-web.jar在Web应用程序中配置Log4j2

  13. 13

    使用log4j-web.jar在Web应用程序中配置Log4j2

  14. 14

    如何用另一个log4j2配置文件覆盖一个log4j2配置文件?

  15. 15

    使用log4j2登录时aix系统上的编码问题

  16. 16

    如何为WildFly 9中部署的应用程序设置Log4j2?

  17. 17

    如何配置log4j2 Web应用程序

  18. 18

    如何在Web应用程序中查找log4j2的属性参数?

  19. 19

    如何从JNDI加载log4j2配置文件

  20. 20

    Log4j2:如何为每个用户将日志写入单独的文件?

  21. 21

    如何使log4j2每个日志调用记录一个文件?

  22. 22

    如何在log4j2中指定日志文件

  23. 23

    如何避免在Log4J2中创建空文件?

  24. 24

    如何在tomcat中设置log4j2文件夹?

  25. 25

    log4j2 跳过记录附加信息

  26. 26

    使用log4j2时日志文件为空

  27. 27

    使用可执行JAR时指定Log4j2配置文件

  28. 28

    使用log4j2的多个线程的不同日志文件

  29. 29

    Log4j2:文件记录无法与jar一起使用

热门标签

归档