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

Wer*_*ner 5 c# logging log4net nlog common.logging

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

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

谢谢.

And*_*ren 6

我同意 TRACE 比 DEBUG 更好。

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

if (Log.IsTraceEnabled)
   Log.TraceFromat("Method {0} args {1}", method, string.Join(",", args));
Run Code Online (Sandbox Code Playgroud)

也就是说,我将“TRACE”级别解释为帮助我跟踪应用程序中的调用,而 DEBUG 则编写帮助开发人员调试程序行为的信息。不知道这样说有道理吗?


Chr*_*s S 4

请记住,log4net 来自 Java 世界,而 NLog 从 log4net 中汲取了许多想法 - 因此这些框架的跟踪和调试将有所不同,因为它们不基于 .NET 框架设计者的日志记录世界观,而后者位于System.Diagnostics 命名空间。

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

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