C# 从输出中删除log4net系统属性

C# 从输出中删除log4net系统属性,c#,log4net,C#,Log4net,我想使用LogicalThreadContext在我的WCF服务中传递一些上下文信息。我需要通过不同的属性。在C#中,我有代码 LogicalThreadContext.Properties["MyProperty"] = 1; 在log4net配置中,我有 <log4net> <appender name="RollingLogFileAppenderSize" type="log4net.Appender.RollingFileAppender"> <fi

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

LogicalThreadContext.Properties["MyProperty"] = 1;
在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> 
我不想在日志中包含系统属性log4net:Identity、log4net:UserName和log4net:HostName。如何做到这一点?我可以这样写配置

conversionPattern value="%d [%2t] [%property{MyProperty}] %level %m%n" 
但我在代码中有几个属性,我只想看到我添加的属性。代码

LogicalThreadContext.Properties.Remove("log4net:UserName");

不起作用

我发现可以只删除带有代码的log4net:HostName属性
GlobalContext.Properties.Remove(LoggingEvent.HostNameProperty)
。 由于
log4net.Core.LoggingEvent
类中的
CreateCompositeProperties
方法,无法删除log4net:Identity和log4net:UserName。
它在没有任何条件的情况下添加这些属性,因此在上一个log4net版本中删除它们是不可能的。

我也遇到了同样的问题

GlobalContext.Properties.Clear();

为我工作。

您能显示您的完整配置吗?
GlobalContext.Properties.Clear();