Creo que log4net está haciendo todo lo que enumeró para mí.
Los oyentes conectables suenan como apéndices: hay muchos de ellos y, de hecho, incluso pirateé el archivo de registro rodante para terminar siempre en .log (para asociaciones de archivos), agregué un campo cc al appendidor de correo electrónico y finalmente sintonicé mis valores favoritos para el appender de consola de color. Si me permite el atrevimiento - mi color felicidad consola:
<appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
<!-- Can Use:
Blue
Green
Red
White
Yellow
Purple
Cyan
HighIntensity
-->
<mapping>
<level value="FATAL" />
<foreColor value="Yellow, HighIntensity" />
<backColor value="Red" />
</mapping>
<mapping>
<level value="ERROR" />
<foreColor value="White" />
<backColor value="Purple, HighIntensity" />
</mapping>
<mapping>
<level value="WARN" />
<backColor value="Blue" />
<foreColor value="White" />
</mapping>
<mapping>
<level value="INFO" />
<backColor value="Green" />
<foreColor value="White" />
</mapping>
<mapping>
<level value="DEBUG" />
<foreColor value="White" />
</mapping>
<layout type="log4net.Layout.PatternLayout">
<!--<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />-->
<!--<conversionPattern value="%-5level %file:%line - %message%newline" />-->
<conversionPattern value="%level %logger:%line %newline %message%newline" />
</layout>
interruptores traza personalizables: Log4net sólo viene con FATAL ERROR WARN información de depuración con el fin de aumentar la verbosidad. El único que realmente echo de menos es AUDITAR para quién hizo qué registro.
configuración personalizable: Yo uso un archivo log4net.config la que me carga hasta en tiempo de ejecución (o escribir un registro en c:. \ Lloriqueo que no puedo encontrar la configuración)
Try
' Get log4net configuration from file
Dim logConfigFile As FileInfo
logConfigFile = New FileInfo(".\log4net.config")
If logConfigFile.Exists Then
XmlConfigurator.Configure(logConfigFile)
Else
CreateEmergenceLogFile(logConfigFile.FullName)
End If
Catch ex As Exception
Console.Out.WriteLine("Could not load the log4net config file")
End Try
sólo un gran conjunto de TraceListeners: lo siento omitiendo ese - Voy a tomar su palabra para ello.
Correlación de actividades/ámbitos: quiere decir que cada archivo (clase de lectura) obtiene su propio registro con nombre que puede tener umbrales de nivel de registro por separado. De hecho se puede registro de segmento, incluso en una sola clase (que en realidad puede haber crecido a hacer demasiado ...)
en un archivo de clase:
Private Shared _logger As log4net.ILog = _
log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)
Private Shared _loggerAttribute As log4net.ILog = _
log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName & ".Attribute")
Private Shared _loggerCache As log4net.ILog = _
log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName & ".Cache")
El seguimiento de servicio Visor: en el log4net .config:
<logger name="NipissingU.ADWrapper.EntryTools.Attribute">
<level value="INFO" />
</logger>
<logger name="NipissingU.ADWrapper.EntryTools.Cache">
<level value="WARN" />
</logger>
Todo es configurable en app.config/web.config: bueno, tal vez eso es una buena cosa en ASP.NET, no sé, pero al hacer aplicaciones de conteo rica frijol cliente Me gusta un archivo de configuración separado.
Todo aquí es solo mi propio pequeño truco de uso.
HTH, -Mike
Encontré esta pregunta digna de SO, y también encontré varias respuestas para ser lo suficientemente informativas como para que ya no tenga que buscar más información. Quien haya cerrado esta pregunta como "no constructivo", me pregunto si se hizo o no por un sesgo hacia log4net y una insatisfacción general con la línea de respuestas recibidas. Esta pregunta y muchas respuestas ayudan a aclarar el miedo, la incertidumbre, la duda y la simple información errónea que rodean log4net y .NET Tracing. –
También he encontrado esta pregunta útil. Y de hecho coincidía exactamente con lo que estaba buscando. – Darkonekt