日志级别:您认为DEBUG比TRACE更精细吗?

时间:2012-06-25 08:33:51

标签: c# logging log4net nlog common.logging

我的问题来自this问题,其中一条评论表明DEBUG日志级别比TRACE更精细。看看TRACE和DEBUG在.NET中意味着什么,这似乎是有道理的,因为根据定义,DEBUG(作为一个概念)在生产中从未见过。这可能是他们未被用作企业库中的事件类型的原因。另一方面,我所知道的所有其他实现(log4net,nlog,common.logging)都将TRACE作为比DEBUG更精细的级别。也就是说,在DEBUG日志级别运行的应用程序不会写入TRACE日志。

我们需要实现自己的日志框架,我想知道是否有更多的人认为DEBUG真的应该是最“垃圾”的日志级别?或者,如果我们的新框架应该为新开发人员提供一些易于使用的熟悉程序等,您会认为这是一个错误吗?

感谢。

2 个答案:

答案 0 :(得分:4)

我同意TRACE比DEBUG更精细。

示例:如果我使用PostSharp为我的应用程序中的每个方法调用添加自动日志记录语句,我希望在每个方法的开头注入此代码:

if (Log.IsTraceEnabled)
   Log.TraceFromat("Method {0} args {1}", method, string.Join(",", args));

也就是说,我将级别“TRACE”解释为帮助我通过应用程序跟踪调用,而DEBUG正在编写帮助开发人员调试程序行为的信息。不知道这是否有意义?

答案 1 :(得分:4)

请记住,log4net来自Java世界,NLog从log4net中获取了许多想法 - 因此Trace和Debug对于这些框架会有所不同,因为它们不是基于.NET框架设计者的日志记录的世界观。在System.Diagnostics命名空间中。

我建议.NET中的Trace与.NET世界中的Debug同义,因为您启用了跟踪(通过TRACE编译器指令或web.config中)以显示Debug信息。

显然,在NLog和Log4Net中,信息的严重程度可能会被解释为略有不同,但两者最终都会用于跟踪错误,而不是系统错误,因此它们具有基本相同的含义。