C# · 12月 30, 2021

c#-4.0 – Log4net C#4.0 [(null)]输出

当我使用log4net登录.NET4.0时,我使用以下代码

LogManager声明:

private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

而在代码中使用时:

log.Info(“My info text”);

这会将以下内容输出到日志文件:

2013-10-01 14:41:11,010 [3] INFO MyNamespace.MyClass [(null)] – My info text

我想知道[(null)]是什么意思,我该如何去除/改变它?

这是我的配置文件:

<?xml version=”1.0″?><configuration> <configSections> <section name=”log4net” type=”log4net.Config.Log4NetConfigurationSectionHandler,Log4net”/> </configSections> <startup> <supportedRuntime version=”v4.0″ sku=”.NETFramework,Version=v4.0″/> </startup> <log4net> <root> <level value=”DEBUG” /> <appender-ref ref=”LogFileAppender” /> </root> <appender name=”LogFileAppender” type=”log4net.Appender.RollingFileAppender” > <param name=”File” value=”log-file.txt” /> <param name=”AppendToFile” value=”true” /> <rollingStyle value=”Size” /> <maxSizeRollBackups value=”10″ /> <maximumFileSize value=”10MB” /> <staticLogFileName value=”true” /> <layout type=”log4net.Layout.PatternLayout”> <param name=”ConversionPattern” value=”%date [%thread] %-5level %logger [%property{NDC}] – %message%newline” /> </layout> </appender> </log4net></configuration>解决方法 要停止它从配置文件中删除[%属性{NDC}].

本文介绍了如何使用NDC,When to use ‘nested diagnostic context’ (NDC)?

简而言之,调用静态方法log4net.NDC.Push设置代码的上下文.

log4net.NDC.Push(“context”)

从该点向前输出日志消息将提供%属性{NDC}作为上下文.