为什么log4Net中没有跟踪级别?

arm*_*nvg 32 c# vb.net log4net

我只是想知道为什么log4Net中没有跟踪级别.这个级别似乎缺失了,我有时觉得需要使用它,例如输出应用程序中正在执行的事件.此功能是log4J一部分.

我知道我可以创建一个像这里谈到的自定义级别,但我不想把时间和精力放在我认为应该成为库本身的一部分的东西上.

你知道一个实现这个的log4net扩展库,或者为什么这不是.net端口的一部分?

Wag*_*lva 52

您可以使用扩展方法向log4net添加详细(或跟踪级别).这就是我正在使用的:

public static class ILogExtentions
{       
    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);
    }

}
Run Code Online (Sandbox Code Playgroud)

用法示例:

public class ClientDAO
{
    private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(ClientDAO));

    public void GetClientByCode()
    {
        log.Trace("your verbose message here");
        //....
    }
}
Run Code Online (Sandbox Code Playgroud)

资源:

http://www.matthewlowrance.com/post/2010/07/14/Logging-to-Trace-Verbose-etc-with-log4net.aspx


Joe*_*Joe 9

log4net.ILog接口仅公开Fatal,Error,Warn,Info和Debug级别的方法和属性.

我同意这有点限制,并希望在那里再看一个级别.但是,最佳等级数可能是"比目前的等级数多一个" - 你总会发现自己偶尔会想要一个等级.

  • 我怀疑它是在设计ILog接口后添加到SDK中的. (3认同)