您可以将 Console 和日志文件附加为 Trace 侦听器,并将 Console 编写方法的所有用法替换为 Trace:
Trace.Listeners.Add(new ConsoleTraceListener());
Trace.Listeners.Add(new DefaultTraceListener{LogFileName="C:\temp\myOutput.txt"});
...
Trace.Flush();
Trace.Listeners.Clear();
了解 Trace 与 Console 不同,无法从中读取,因此如果您曾经使用 Console.ReadLine 并想要记录用户的输入,则需要将其“回显”回跟踪侦听器。
如果你想更 SOLID,你可以设置一个 IOutputWriter 接口,然后实现三个类;一个写入控制台,一个写入文件,第三个具有其他 IOutputWriter 的集合,并将对其方法的任何调用路由到所有附加的 IOutputWriter。这使用 Composite 和 Adapter 模式来规范你的程序和任何监听它的东西之间的接口。这回避了内置的 Trace/Debug 功能,但是如果您已经将其用于不同级别的消息传递,或者您需要消息传递的工作方式与 Trace 提供的默认值稍有不同,那么这是替代方案.