从输出中删除 log4net 系统属性
Remove log4net system properties from output
我想使用 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>
在日志中我得到了
2015-11-03 16:24:36,313 [10] [{MyProperty=1, log4net:Identity=, log4net:UserName=User, log4net:HostName=User}] INFO - Info
我不想在日志中包含系统属性 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
class https://github.com/apache/log4net/blob/trunk/src/Core/LoggingEvent.cs 中的 CreateCompositeProperties
方法,无法删除 log4net:Identity 和 log4net:UserName。
它在没有任何条件的情况下添加了这些属性,因此不可能在最后一个 log4net 版本中删除它们。
我遇到了同样的问题。
GlobalContext.Properties.Clear();
对我有用。
我想使用 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>
在日志中我得到了
2015-11-03 16:24:36,313 [10] [{MyProperty=1, log4net:Identity=, log4net:UserName=User, log4net:HostName=User}] INFO - Info
我不想在日志中包含系统属性 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
class https://github.com/apache/log4net/blob/trunk/src/Core/LoggingEvent.cs 中的 CreateCompositeProperties
方法,无法删除 log4net:Identity 和 log4net:UserName。
它在没有任何条件的情况下添加了这些属性,因此不可能在最后一个 log4net 版本中删除它们。
我遇到了同样的问题。
GlobalContext.Properties.Clear();
对我有用。