Redirect Trace output to Console

后端 未结 3 741
萌比男神i
萌比男神i 2020-12-04 12:03

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:



        
相关标签:
3条回答
  • 2020-12-04 12:26

    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();
    
    0 讨论(0)
  • 2020-12-04 12:27

    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.

    0 讨论(0)
  • 2020-12-04 12:36

    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.

    0 讨论(0)
提交回复
热议问题