Are you absolutely committed to still using Trace? If not, I'd use a more fully-featured logging system such as Log4Net.
However, if you really want to use Trace
then you can reconfigure the TraceListener
s used with an app.config
file. The TraceListener
MSDN docs give an example somewhat like this:
<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
will dump logs to the given file. (There are other options available too.)
Alternatively, you can do this programmatically:
Trace.Listeners.Add(new TextWriterTraceListener("foo.log"));
Note that you may need to explicitly flush the traces before your app exits, either with:
Trace.Flush();
or the more complicated:
foreach (TraceListener listener in Trace.Listeners)
{
listener.Flush();
}
(I only mention it because I had to when testing this!)
EDIT: As noted in comments, if you're happy for the listener to be flushed after every write (which avoids having to flush at the end, but may harm performance) you can set Trace.AutoFlush
to true (including in the XML - see the autoflush
attribute).
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…