在发布System.Diagnostics之前删除日志

时间:2013-04-07 14:28:05

标签: c# logging windows-phone-8

要记录输出我正在使用以下代码。

 System.Diagnostics.Debug.WriteLine("Hello");

现在,它始终建议在提交应用程序之前删除此类日志。

那么,在我们提交它以供发布或隐式完成之前,我们是否必须删除这些行。

还有另一种更好的方法来记录C#中的输出,这会在发布时删除记录到控制台。我看到Log4Net就是其中之一。

2 个答案:

答案 0 :(得分:2)

System.Diagnostics.Debug类上的所有方法都有ConditionalAttribute,因此在大多数编译器中,它们不会被编译为Release版本(除非您在发布版本中定义了DEBUG属性)。 1

Visual Studio中的编译器确实如此。

关于log4Net的第二个问题实际上是相反的,如果您决定开始使用log4Net,需要注意的事项 - 如果您将记录器设置为调试跟踪级别,则会在调试版本中包含log4Net调试调用(通常使用运行时配置完成)。


1。 MSDN页面实际上(IMO)有点不清楚,但这些SO帖子与我的解释一致:

System.Diagnostics.Debug.WriteLine in production code

C# Do Debug statements get compiled out when running in Release mode?

答案 1 :(得分:1)

您可以使用预处理程序指令:

#if DEBUG
    System.Diagnostics.Debug.WriteLine("Hello");
#endif

当您在 Release 构建配置中构建应用程序时,将跳过该行。