c#-4.0 - studio - log4net que es
Log4net C#4.0[(null)] en salida (2)
si solo desea que desaparezca (null)
, también puede establecer log4net.Util.SystemInfo.NullText
en algún otro valor como ""
o string.Empty
, lo usará en su lugar.
Cuando uso log4net para iniciar sesión en .NET4.0, uso el siguiente código
Declaración de LogManager:
private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
Y cuando se utiliza en el código:
log.Info("My info text");
Esto genera lo siguiente para el archivo de registro:
2013-10-01 14:41:11,010 [3] INFO MyNamespace.MyClass [(null)] - My info text
Me pregunto qué significa [(null)] y cómo puedo eliminarlo / cambiarlo.
Este es mi archivo de configuración:
<?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>
Fijar
Para evitar que aparezca en el registro, elimine [%property{NDC}]
del archivo de configuración.
Esto sucede porque log4net rellena automáticamente un contexto de información que podría ser útil para el registro; en algunos casos, esto puede resultar en un valor null
.
log4net NDC
Esta publicación explica cómo usar NDC: ¿ Cuándo usar el ''contexto de diagnóstico anidado'' (NDC)?
En resumen, log4net llama al método estático log4net.NDC.Push
para establecer el contexto del código.
Por ejemplo, puede configurar el NDC manualmente ejecutando lo siguiente:
log4net.NDC.Push("context")
A partir de ese punto, el envío de un mensaje de registro proporcionará %property{NDC}
como el context
la cadena.
ACTUALIZAR:
NDC.Push
ha quedado en desuso. Alternativamente, puede usar ThreadContext.Stacks["NDC"].Push("context")