如何:向应用程序代码添加跟踪语句

注意

本文特定于 .NET Framework。 它不适用于 .NET 的较新版本实现,包括 .NET 6 及更高版本。

最常用于跟踪的方法是用于将输出写入侦听器的以下方法:Write、WriteIf、WriteLine、WriteLineIf、Assert 和 Fail。 这些方法可以分为两类:Write、WriteLine 和 Fail 都无条件地发出输出,而 WriteIf、WriteLineIf 和 Assert 则测试 Boolean 条件并根据条件的值来写入或不写入。 WriteIf 和 WriteLineIf 在条件为 true 时发出输出,而 Assert 在条件为 false 时发出输出

当设计跟踪和调试策略时,应考虑所需的输出形式。 填充不相关信息的多个 Write 语句将创建难以读取的日志。 另一方面,如果使用 WriteLine 将相关语句放置在单独的行上,可能会难以区分哪些信息应该在一起。 通常,当需要将来自多个源的信息组合起来创建单个信息性消息时,使用多个 Write;当需要创建单个完整消息时,则使用 WriteLine 语句。

写入完整的行

  1. 调用 WriteLineWriteLineIf 方法。

    一个回车符会被追加到此方法返回的消息末尾,使 Write、WriteIf、WriteLine 或 WriteLineIf 返回的下一条消息将从以下行开始:

    Dim errorFlag As Boolean = False
    Trace.WriteLine("Error in AppendData procedure.")
    Trace.WriteLineIf(errorFlag, "Error in AppendData procedure.")
    
    bool errorFlag = false;
    System.Diagnostics.Trace.WriteLine ("Error in AppendData procedure.");
    System.Diagnostics.Trace.WriteLineIf(errorFlag,
       "Error in AppendData procedure.");
    

写入部分行

  1. 调用 WriteWriteIf 方法。

    由 Write、WriteIf、WriteLine 或 WriteLineIf 生成的下一条消息将从由 Write 或 WriteIf 语句生成的消息所在的同一行上开始:

    Dim errorFlag As Boolean = False
    Trace.WriteIf(errorFlag, "Error in AppendData procedure.")
    Debug.WriteIf(errorFlag, "Transaction abandoned.")
    Trace.Write("Invalid value for data request")
    
    bool errorFlag = false;
    System.Diagnostics.Trace.WriteIf(errorFlag,
       "Error in AppendData procedure.");
    System.Diagnostics.Debug.WriteIf(errorFlag, "Transaction abandoned.");
    Trace.Write("Invalid value for data request");
    

验证特定条件在执行方法之前或之后存在

  1. 调用 Assert 方法。

    Dim i As Integer = 4
    Trace.Assert(i = 5, "i is not equal to 5.")
    
    int i = 4;
    System.Diagnostics.Trace.Assert(i == 5, "i is not equal to 5.");
    

    备注

    可以将 Assert 用于跟踪和调试。 此示例将调用堆栈输出到 Listeners 集合中的任意侦听器。 有关详细信息,请参阅托管代码中的断言Debug.Assert和 。

请参阅