我只是想知道为什么log4Net中没有trace level。这个级别似乎缺失了,我有时觉得需要使用它,例如输出应用程序中正在执行的事件。此功能为part of log4J。
我知道我可以像here那样创建一个自定义级别,但我不想把时间和精力放在我觉得应该成为图书馆本身的一部分上。
你知道一个实现这个的log4net扩展库,或者为什么它不是.net端口的一部分?
答案 0 :(得分:50)
您可以使用扩展方法向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);
}
}
用法示例:
public class ClientDAO
{
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(ClientDAO));
public void GetClientByCode()
{
log.Trace("your verbose message here");
//....
}
}
来源:
http://www.matthewlowrance.com/post/2010/07/14/Logging-to-Trace-Verbose-etc-with-log4net.aspx
答案 1 :(得分:13)
是log4net.Core.Level类http://logging.apache.org/log4net/release/sdk/html/F_log4net_Core_Level_Trace.htm中的跟踪级别
答案 2 :(得分:9)
log4net.ILog接口仅公开Fatal,Error,Warn,Info和Debug级别的方法和属性。
我同意这有点限制,并希望在那里再看一个级别。但是那么最佳的关卡数量可能是“比目前的关卡数量多一个” - 你总会发现自己偶尔需要一个关卡。