您的位置:首页 > 编程语言 > C#

C# 深入学习 之 Winform记录日志

2010-03-21 00:06 295 查看
using System;
using System.Windows.Forms;
using ST = System.Threading;
using SWF = System.Windows.Forms;
using T = System.Diagnostics.Trace;

namespace WindowsFormsApplication1
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(OnAppException);
Application.ThreadExit += new EventHandler(OnAppExit);
string logFile = string.Format("{0}{1}", AppDomain.CurrentDomain.BaseDirectory, "Applog.txt");
System.IO.TextWriter log = new System.IO.StreamWriter(logFile);

if (true)
{
System.Diagnostics.TextWriterTraceListener logger;
logger = new System.Diagnostics.TextWriterTraceListener(log);
System.Diagnostics.Trace.Listeners.Add(logger);
System.Diagnostics.Trace.WriteLine("App starting:" + DateTime.Now);

}
Application.Run(new Form1());
}

/// <summary>
/// Generic exception handler for application.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private static void OnAppException(object sender, ST.ThreadExceptionEventArgs e)
{
Exception ex;
ex = e.Exception;

// inform user...
SWF.MessageBox.Show("Halting due to error: " + ex.Message, "Bank Customer App", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);

// log it (the entire exception chain)...
T.WriteLine("Generic Application Exception Handler:");
while (ex != null)
{
T.WriteLine(ex.GetType().FullName);
T.Indent();
T.WriteLine("Msg: " + ex.Message);
T.WriteLine("Trace: " + ex.StackTrace);
T.Unindent();
T.Flush();

ex = ex.InnerException;
}//while

// halt app
T.Close();
SWF.Application.Exit();
}

/// <summary>
/// Called during normal application termination.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private static void OnAppExit(object sender, System.EventArgs e)
{
T.Close();  // close trace file
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: