从输出中删除log4net系统属性

Vas*_*huk 5 c# log4net

我想使用LogicalThreadContext在我的WCF服务中传递一些上下文信息.我需要传递不同的属性.在C#中我有代码

LogicalThreadContext.Properties["MyProperty"] = 1;
Run Code Online (Sandbox Code Playgroud)

在log4net配置中我有

<log4net>
<appender name="RollingLogFileAppenderSize" type="log4net.Appender.RollingFileAppender">
  <file value="Logs\Log.log" />
  <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
  <appendToFile value="true" />
  <rollingStyle value="Composite" />
  <datePattern value="yyyyMMdd" />
  <maxSizeRollBackups value="3" />
  <maximumFileSize value="5MB" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%d [%2t] [%property] %level %m%n"  />
  </layout>
</appender>
<root>
  <level value="INFO" />
  <appender-ref ref="RollingLogFileAppenderSize" />
</root>
</log4net> 
Run Code Online (Sandbox Code Playgroud)

在日志里我得到了

2015-11-03 16:24:36,313 [10] [{MyProperty=1, log4net:Identity=, log4net:UserName=User, log4net:HostName=User}] INFO  - Info
Run Code Online (Sandbox Code Playgroud)

我不想在日志中拥有系统属性log4net:Identity,log4net:UserName和log4net:HostName.这该怎么做?我可以写这样的配置

conversionPattern value="%d [%2t] [%property{MyProperty}] %level %m%n" 
Run Code Online (Sandbox Code Playgroud)

但我在代码中有几个属性,我想只看到我添加的属性.码

LogicalThreadContext.Properties.Remove("log4net:UserName");
Run Code Online (Sandbox Code Playgroud)

不起作用.

Vas*_*huk 5

我发现可以使用 code 仅删除 log4net:HostName 属性 GlobalContext.Properties.Remove(LoggingEvent.HostNameProperty)。由于类https://github.com/apache/log4net/blob/trunk/src/Core/LoggingEvent.cs 中CreateCompositeProperties方法,无法删除 log4net:Identity 和 log4net:UserName 。它在没有任何条件的情况下添加这些属性,因此不可能在最后一个 log4net 版本中删除它们。log4net.Core.LoggingEvent