Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 编辑日志消息-LogEventFactory vs RewriteAppender_Java_Performance_Logging_Log4j2 - Fatal编程技术网

Java 编辑日志消息-LogEventFactory vs RewriteAppender

Java 编辑日志消息-LogEventFactory vs RewriteAppender,java,performance,logging,log4j2,Java,Performance,Logging,Log4j2,我工作的应用程序必须屏蔽日志中的一些敏感数据,因此我必须以某种方式编辑它们。但是,它还将一些变量存储在ThreadLocal中,并将它们放入日志中。通常,我会在appender中使用PatternLayout,将它们放入记录的字符串中。不幸的是,如果日志是异步执行的,那么记录器就不能访问ThreadLocal变量 我已经使用LogEventFactory解决了这个问题。我将布局作为log4j2.xml中声明的属性传递给记录器,然后在自定义事件工厂中执行格式化。看起来是这样的: <Async

我工作的应用程序必须屏蔽日志中的一些敏感数据,因此我必须以某种方式编辑它们。但是,它还将一些变量存储在
ThreadLocal
中,并将它们放入日志中。通常,我会在appender中使用
PatternLayout
,将它们放入记录的字符串中。不幸的是,如果日志是异步执行的,那么记录器就不能访问
ThreadLocal
变量

我已经使用
LogEventFactory
解决了这个问题。我将布局作为log4j2.xml中声明的属性传递给记录器,然后在自定义事件工厂中执行格式化。看起来是这样的:

<AsyncLogger name="AsyncLogger">
    <Property name="layout" value="%d %x{var1} %x{var2} %x{var3}/>
    <AppenderRef="ref"/>
<AsyncLogger/>

在这个问题上寻找一些解决方案。在这个问题上寻找一些解决方案。