这可能更像是一个OOP概念问题,但这就是我想要做的事情。
我有一个使用System.Diagnostics.Trace.WriteLine输出调试信息的应用程序,因此可以使用DebugView查看它。
我想覆盖/扩展(不确定正确的术语)此方法将文本记录到文件中,或者除了Trace输出之外。这将允许我为我的应用程序编写一个新的WriteLine方法,并且我可以在应用程序的其余部分保持所有其他System.Diagnostics.Trace.WriteLine语句不变。
那么我将如何在VB.Net应用程序中更改此方法的行为?
答案 0 :(得分:27)
您是否绝对致力于仍使用Trace?如果没有,我会使用功能更全面的日志系统,例如Log4Net。
但是,如果您确实想使用Trace
,则可以重新配置与TraceListener
文件一起使用的app.config
。 TraceListener
MSDN docs给出了一个像这样的例子:
<configuration>
<system.diagnostics>
<trace autoflush="false" indentsize="4">
<listeners>
<add name="fileLogger"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="LogFile.log" />
<remove name="Default" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
TextWriterTraceListener
会将日志转储到给定文件。 (还有其他选择。)
或者,您可以通过编程方式执行此操作:
Trace.Listeners.Add(new TextWriterTraceListener("foo.log"));
请注意,您可能需要在应用退出之前显式刷新跟踪,方法是:
Trace.Flush();
或更复杂:
foreach (TraceListener listener in Trace.Listeners)
{
listener.Flush();
}
(我只提到它,因为我在测试时必须这样做!)
编辑:正如评论中所述,如果您对每次写入之后刷新侦听器感到高兴(这可以避免在最后进行冲洗,但可能会损害性能),您可以设置{ {3}}为true(包括在XML中 - 请参阅autoflush
属性)。
答案 1 :(得分:3)
您可以配置TextWriterTraceListener以将跟踪日志输出到文件。配置信息可以在MSDN上找到:
http://msdn.microsoft.com/en-us/library/system.diagnostics.textwritertracelistener(VS.80).aspx
您还可以转储到事件日志或其他各种地方,以获取您可以在此处查看的内置跟踪侦听器列表:
http://msdn.microsoft.com/en-us/library/4y5y10s7(VS.80).aspx