Let\'s say I\'m working on a little batch-processing console app in VB.Net. I want to be able to structure the app like this:
Joel,
You could do this instead of the app config method:
Trace.Listeners.Add(new ConsoleTraceListener());
or this, if you want to manage adding or removing the listener during the life of the app:
ConsoleTraceListener listener = new ConsoleTraceListener();
Trace.Listeners.Add(listener);
Trace.WriteLine("Howdy");
Trace.Listeners.Remove(listener);
Trace.Close();
Great solution, but I have a situation where I have different dll's being run by the same calling exe, so I don't want to modify the calling exe's .config file. I want each dll to handle it's own alteration of the trace output.
Easy enough:
Stream outResultsFile = File.Create ("output.txt");
var textListener = new TextWriterTraceListener (outResultsFile);
Trace.Listeners.Add (textListener);
This will, of course, output Trace output to the "output.txt" file.
You can add the following to your exe's .config file.
<?xml version="1.0"?>
<configuration>
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add name="logListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="cat.log" />
<add name="consoleListener" type="System.Diagnostics.ConsoleTraceListener"/>
</listeners>
</trace>
</system.diagnostics>
</configuration>
I included the TextWriter as well, in case you're interested in logging to a file.