Demonstrates routing debug messages to a file
/* C# Programming Tips & Techniques by Charles Wright, Kris Jamsa Publisher: Osborne/McGraw-Hill (December 28, 2001) ISBN: 0072193794 */ // Listener.cs -- Demonstrates routing debug messages to a file. // // Compile this program with the following command line: // C:>csc /debug:full /d:TRACE Listener.cs using System; using System.Diagnostics; using System.IO; namespace nsDebugTest { public class Listener { static void Main(string[] args) { EnableDebugging(); Trace.AutoFlush = true; Trace.WriteLine ("Debug is on"); // Add the fllowing three lines to start another listener: FileStream strm = new FileStream ("Once.txt", FileMode.Create); TextWriterTraceListener listen = new TextWriterTraceListener (strm); Trace.Listeners.Add (listen); int Num = 1; Trace.Assert (Num == 0, "Num is not equal to 0"); // Add the following three lines: Trace.Listeners.Remove (listen); listen.Flush (); strm.Close (); clsTest test = new clsTest(42); test.ShowValue(); // Trace.Listeners.Remove ("Console"); // Trace.WriteLine ("\r\nConsole output has been disabled"); } static void EnableDebugging () { Trace.Listeners.Clear(); // Trace.Listeners.Add (new TextWriterTraceListener(Console.Out, "Console")); Trace.Listeners.Add (new TextWriterTraceListener(Console.Out, "Console")); FileStream strm = new FileStream ("./Trace.out", FileMode.Create); StreamWriter writer = new StreamWriter (strm); Trace.Listeners.Add (new TextWriterTraceListener(writer)); } } class clsTest { public clsTest (int num) { m_Num = num; } int m_Num; public void ShowValue() { try { DoSomething (); } catch (Exception e) { Console.WriteLine (e.StackTrace); } if (m_Num < 50) { Debug.WriteLine (m_Num + " is less than 50"); Console.WriteLine (m_Num + " is less than 50"); } } void DoSomething () { Trace.WriteLine (Environment.StackTrace); } } }