Debug类和Trace类有什么区别?

我试图在我们的一个应用程序中编写更好的error handling和调试逻辑。 有人可以解释Debug和Trace类之间的区别吗? 文档看起来非常相似。 我想将这些类与NLog结合使用以改进我们的调试工作。

DebugTrace类具有非常相似的方法。 主要区别在于对Debug类的调用通常仅包含在Debug构建中,并且Trace包含在所有构建中(Debug和Release)。 您可以通过编译器标志DEBUG和TRACE来控制它。 如果查看两者的文档,您会注意到ConditionalAttribute注释了这些方法。 这会导致仅在定义了适当的编译器标志时才将方法调用包含在二进制文件中。 您可以定义自己的编译器标志,并以类似的方式将其与ConditionalAttribute结合使用。 请注意,如果使用此方法,则不会从已编译的二进制文件中删除这些方法。 修改调用站点以删除方法调用。

在调试期间使用调试。 Trace正在写入日志文件。 它有点像伐木。 两者都非常相似,但需要跟踪长期保留,调试以进行实时调试。