c# - ejemplo - ¿Por qué no hay un nivel de rastreo en log4Net?
log4net levels (3)
Me preguntaba por qué no hay un nivel de rastreo en log4Net. Este nivel parece estar perdido y, a veces, siento la necesidad de usarlo, por ejemplo, para mostrar qué eventos se están ejecutando en una aplicación. Esta característica es una parte de log4J .
Sé que puedo crear un nivel personalizado como el que se menciona here pero no quiero dedicarle tiempo y esfuerzo a algo que, en mi opinión, debería ser parte de la biblioteca.
¿Conoces una biblioteca de extensión de log4net que implementa esto o por qué esto no formaba parte del puerto de .net?
Hay un nivel de rastreo en la clase log4net.Core.Level http://logging.apache.org/log4net/release/sdk/html/F_log4net_Core_Level_Trace.htm
La interfaz log4net.ILog solo expone métodos y propiedades para los niveles Fatal, Error, Warn, Info y Debug.
Estoy de acuerdo en que esto es un poco limitante, y me gustaría ver un nivel más allí. Pero entonces la cantidad óptima de niveles probablemente sea "uno más que el número actual de niveles": siempre te encontrarás ocasionalmente queriendo un nivel más.
Puede agregar un Verbose (o nivel de seguimiento) a log4net utilizando métodos de extensión. Esto es lo que estoy usando:
public static class ILogExtentions
{
private static readonly log4net.ILog log =
log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public static void Trace(this ILog log, string message, Exception exception)
{
log.Logger.Log(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType,
log4net.Core.Level.Trace, message, exception);
}
public static void Trace(this ILog log, string message)
{
log.Trace(message, null);
}
public static void Verbose(this ILog log, string message, Exception exception)
{
log.Logger.Log(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType,
log4net.Core.Level.Verbose, message, exception);
}
public static void Verbose(this ILog log, string message)
{
log.Verbose(message, null);
}
}
Ejemplo de uso:
public class ClientDAO
{
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(ClientDAO));
public void GetClientByCode()
{
log.Trace("your verbose message here");
//....
}
}
Fuente:
http://www.matthewlowrance.com/post/2010/07/14/Logging-to-Trace-Verbose-etc-with-log4net.aspx