通常,您应该避免将诊断信息直接从应用程序代码写入控制台、事件日志、MSMQ 或其他位置。而是调用日志记录 API,并使用配置将输出重定向到您想要的任何位置。
例如,您可以将所有 Console.WriteLine 替换为 Trace.WriteLine (*)。然后,您可以通过修改应用程序配置文件将输出重定向到控制台、文件或其他地方:例如,要输出到控制台,请使用 ConsoleTraceListener,例如:
<configuration>
<system.diagnostics>
<trace autoflush="false" indentsize="4">
<listeners>
<add name="configConsoleListener"
type="System.Diagnostics.ConsoleTraceListener" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
调试时,您将在控制台上获得输出 - 在客户站点上,您将其配置为将跟踪输出重定向到文件、事件日志或类似文件。
更好的是,使用 3rd 方日志框架(我推荐 Log4Net),它会为您提供比 System.Diagnostics.Trace 更多的选项。
(*) Trace.Write/Trace.WriteLine 与 Debug.Write/Debug.WriteLine 相同,只是后者仅在定义了 DEBUG 符号时才编译。因此,如果您希望输出在 Release 版本中可用,请首选 Trace 而不是 Debug。