2013-10-01 3 views
13

Когда я использую log4net для входа в .NET4.0 Я использую следующий кодLog4Net C# 4.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> 
+0

Простое упрощение. Вместо 'LogManager.GetLogger (System.Reflection.MethodBase.GetCurrentMethod(). DeclaringType);' просто делать 'LogManager.GetLogger (typeof (MyClassName));' – user2359695

ответ

23

Чтобы остановить его появление в журнале удалить [%property{NDC}] из файла конфигурации.

Это сообщение объясняет, как использовать НДЦ, When to use 'nested diagnostic context' (NDC)?

В коротком вызове статического метода log4net.NDC.Push установить контекст кода.

log4net.NDC.Push("context") 

С этой точки вперед, выводя сообщение журнала будет поставлять %property{NDC}, как context.

15

, если вы просто хотите, чтобы (null) исчезнуть вы можете также установить log4net.Util.SystemInfo.NullText в другое значение, как "" или string.Empty, он будет использовать это вместо этого.

Смежные вопросы