Csharp/C Sharp/Development Class/Log

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Add a EventLogTraceListener to the listener collection and writing error messages to the Application log

<source lang="csharp"> /* C# Programming Tips & Techniques by Charles Wright, Kris Jamsa Publisher: Osborne/McGraw-Hill (December 28, 2001) ISBN: 0072193794

  • /

// LogTrace.cs -- Demonstrates adding a EventLogTraceListener to the listener // collection and writing error messages to the Application log. // // Compile this program with the following command line: // C:>csc /debug:full /d:TRACE LogTrace.cs using System; using System.Diagnostics; namespace nsEventLogs {

   public class LogTrace
   {
       static public void Main ()
       {

// Create the EventLog object

           EventLog EvLog = new EventLog ();

// Register the source if it has not already been registered

           if (!EventLog.SourceExists ("AppLog.exe"))
           {
               Console.WriteLine ("Creating event log source");
               EventLog.CreateEventSource ("AppLog.exe", "Application");
           }
           EvLog.Source = "AppLog.exe";
           Trace.Listeners.Add (new EventLogTraceListener (EvLog));
           Trace.Listeners.Add (new TextWriterTraceListener (Console.Out));
           Trace.WriteLine ("Debugging to the event log");

// Set the source for the messages to be display in the Event Viewer

           EvLog.Source = "AppLog.exe";
       }
   }

}


      </source>


Demonstrates registering and event source and writing to the Application Log

<source lang="csharp"> /* C# Programming Tips & Techniques by Charles Wright, Kris Jamsa Publisher: Osborne/McGraw-Hill (December 28, 2001) ISBN: 0072193794

  • /

// AppLog.cs -- Demonstrates registering and event source and writing to the // Application Log. // // Compile this program with the following command line: // C:>csc AppLog using System; using System.Diagnostics; using System.IO; namespace nsEventLogs {

   public class AppLog
   {
       static public void Main ()
       {
           // Create the EventLog object
           EventLog EvLog = new EventLog ();
           
           // Register the source if it has not already been registered
           if (!EventLog.SourceExists ("AppLog.exe"))
           {
               Console.WriteLine ("Creating event log source");
               EventLog.CreateEventSource ("AppLog.exe", "Application");
           }
           
           // Set the source for the messages to be display in the Event Viewer
           EvLog.Source = "AppLog.exe";
           // Throw an exception. You don"t have to do this, but it"s a good reason to
           // write to the log.
           try
           {
               CauseTrouble ();
           }
           catch (IOException)
           {
               // Write the information to the application log
               EvLog.WriteEntry("IO exception was thrown", EventLogEntryType.Warning);
           }
       }
       static void CauseTrouble ()
       {
           throw (new IOException());
       }
   }

}


      </source>


Set Text Output To Event Log

<source lang="csharp"> /* Professional Windows GUI Programming Using C# by Jay Glynn, Csaba Torok, Richard Conway, Wahid Choudhury,

  Zach Greenvoss, Shripad Kulkarni, Neil Whitlow

Publisher: Peer Information ISBN: 1861007663

  • /

using System; using System.Drawing; using System.Collections; using System.ruponentModel; using System.Windows.Forms; using System.Data; using System.Runtime.InteropServices; using System.Threading; using System.Diagnostics; namespace FibersTest {

   /// <summary>
   /// Summary description for Form1.
   /// </summary>
   /// 
   
   public class fmrFibers : System.Windows.Forms.Form
   {
       private System.Windows.Forms.ListBox lstFibers;
       /// <summary>
       /// Required designer variable.
       /// </summary>
       private System.ruponentModel.Container components = null;
       [DllImport("kernel32.dll")]
       extern static IntPtr ConvertThreadToFiber(int fiberData);
       [DllImport("kernel32.dll")]
       extern static IntPtr CreateFiber(int size, System.Delegate function, int handle);
       [DllImport("kernel32.dll")]
       extern static IntPtr SwitchToFiber(IntPtr fiberAddress);
       [DllImport("kernel32.dll")]
       extern static void DeleteFiber(IntPtr fiberAddress);
       [DllImport("kernel32.dll")]
       extern static int GetLastError();
       delegate void SetTextOutputToEventLog(int number);
       public fmrFibers()
       {
           //
           // Required for Windows Form Designer support
           //
           InitializeComponent();
           //
           // TODO: Add any constructor code after InitializeComponent call
           //
           Thread t1 = new Thread(new ThreadStart(NewThreadToFiberExecution));
           t1.Start();
       }
       void OutputLog(int fiberNumber)
       {
           this.Invoke(new AddToListBox(SetText), new object[]{fiberNumber});
           SwitchToFiber(obj);
       }
       void SetText(int message)
       {
           lstFibers.Items.Add("Fiber "+message.ToString()+" added this");
       }
       delegate void AddToListBox(int message);
       System.IntPtr obj;
       void NewThreadToFiberExecution()
       {
           try
           {
               SetTextOutputToEventLog stof = new SetTextOutputToEventLog(OutputLog);
               obj = ConvertThreadToFiber(0);
               long l1 = GetLastError();
               System.IntPtr retVal1 = CreateFiber(500, stof, 1);
               System.IntPtr retVal2 = CreateFiber(500, stof, 2);
               System.IntPtr retVal3 = CreateFiber(500, stof, 3);
               System.IntPtr retVal4 = CreateFiber(500, stof, 4);
               System.IntPtr retVal5 = CreateFiber(500, stof, 5);
               if(GetLastError()!=0) throw new Exception("Create Fiber failed!!");
               IntPtr fiber1return = SwitchToFiber(retVal1);
               IntPtr fiber2return = SwitchToFiber(retVal2);
               IntPtr fiber3return = SwitchToFiber(retVal3);
               IntPtr fiber4return = SwitchToFiber(retVal4);
               IntPtr fiber5return = SwitchToFiber(retVal5);
               
               if(GetLastError()!=0) throw new Exception("Create Fiber failed!!");
               DeleteFiber(retVal1);
               DeleteFiber(retVal2);
               DeleteFiber(retVal3);
               DeleteFiber(retVal4);
               DeleteFiber(retVal5);
           }
           catch(Exception e)
           {
               throw e;
           }
       }
       /// <summary>
       /// Clean up any resources being used.
       /// </summary>
       protected override void Dispose( bool disposing )
       {
           if( disposing )
           {
               if (components != null) 
               {
                   components.Dispose();
               }
           }
           base.Dispose( disposing );
       }
       #region Windows Form Designer generated code
       /// <summary>
       /// Required method for Designer support - do not modify
       /// the contents of this method with the code editor.
       /// </summary>
       private void InitializeComponent()
       {
           this.lstFibers = new System.Windows.Forms.ListBox();
           this.SuspendLayout();
           // 
           // lstFibers
           // 
           this.lstFibers.Name = "lstFibers";
           this.lstFibers.Size = new System.Drawing.Size(320, 212);
           this.lstFibers.TabIndex = 0;
           // 
           // fmrFibers
           // 
           this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
           this.ClientSize = new System.Drawing.Size(304, 213);
           this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                         this.lstFibers});
           this.Name = "fmrFibers";
           this.Text = "FibersTest";
           this.ResumeLayout(false);
       }
       #endregion
       /// <summary>
       /// The main entry point for the application.
       /// </summary>
       [STAThread]
       static void Main() 
       {
           Application.Run(new fmrFibers());
       }
   }

}


      </source>


Test Log

<source lang="csharp"> using System; using System.IO; public class TestLog {

    public static void Main()
   {
       string logFile = "LOGFILE.TXT";
       FileStream fs = new FileStream(logFile, FileMode.OpenOrCreate, FileAccess.Write);
       
       StreamWriter sw = new StreamWriter(fs);
       StreamReader sr = new StreamReader(fs);
       sw.WriteLine("First log entry");
       sw.WriteLine("Second log entry");
       while(sr.Peek() > -1)
       {
           Console.WriteLine(sr.ReadLine());
       }
       sw.Close();
       sr.Close();
       fs.Close();
   }

}


      </source>