walk along at the far from top

沙尘里的世界

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

EventLog.cs

//本来是想用.net里面的TraceSource来实现的

//msdn上说支持多线程,可是每次写完日志的时候TraceSource不会自己关闭流文件
//所以直接用流打开直接写了,以后有空改进一下TraceSource的方式写日志,毕竟可以
//Trace到不同的地方(比如Console窗口,windows系统日志),呵呵
//还有就是写一个支持多线程调用的类真的不容易呀
using System;
using System.Diagnostics;
using System.IO;
using System.Text;
using System.Threading;

namespace Dyne.CommClass
{
    public class EventLog
    {
        private static TraceSource traceErr = null;
        private static TraceSource traceLog = null;
        //private static AutoResetEvent eventLog = new AutoResetEvent(true);
        //rivate static AutoResetEvent eventErr = new AutoResetEvent(true);
        /// <summary>
        /// 写日志文件
        /// </summary>
        /// <param name="strLog"></param>
        public static void WriteEventLog(string strLog,MessageEventType logType)
        {
           //eventLog.WaitOne();
            try
            {

                //if (traceLog == null)
                //{
                //    ConsoleTraceListener myConsoleLitener = new ConsoleTraceListener();
                //    if (!Directory.Exists("Log"))
                //        Directory.CreateDirectory("Log");
                //    traceLog = new TraceSource("Log");

                //    添加上传日志监听器
                //    string filename = string.Format(@"Log\UploadEventLog{0}.txt", DateTime.Now.ToString("yyyyMMdd"));
                //    if (!File.Exists(filename))
                //        File.Create(filename);
                //    StreamWriter uploadLog = File.AppendText(filename);
                //    TextWriterTraceListener uploadLogListener = new TextWriterTraceListener(uploadLog);
                //    traceLog.Listeners.Add(uploadLogListener);

                //    添加下载日志监听器
                //    filename = string.Format(@"Log\DownloadEventLog{0}.txt", DateTime.Now.ToString("yyyyMMdd"));
                //    if (!File.Exists(filename))
                //        File.Create(filename);
                //    StreamWriter downloadLog = File.AppendText(filename);
                //    TextWriterTraceListener downloadLogListener = new TextWriterTraceListener(downloadLog);
                //    traceLog.Listeners.Add(downloadLogListener);
                //}
                //switch (logType)
                //{
                //    case MessageEventType.Upload:
                //        traceLog.Listeners[1].WriteLine(strLog);
                //        break;
                //    case MessageEventType.Download:
                //        traceLog.Listeners[2].WriteLine(strLog);
                //        break;
                //}

                //traceLog.Flush();
                if (!Directory.Exists("Log"))
                    Directory.CreateDirectory("Log");
                string fileUp = string.Format(@"Log\UploadEventLog{0}.txt", DateTime.Now.ToString("yyyyMMdd"));
                StreamWriter writeUp = new StreamWriter(fileUp, true);                //文件写入
                string fileDown = string.Format(@"Log\DownloadEventLog{0}.txt", DateTime.Now.ToString("yyyyMMdd"));
                StreamWriter writeDown = new StreamWriter(fileDown, true);
                switch (logType)
                {
                    case MessageEventType.Upload:
                        writeUp.WriteLine(strLog);
                        break;
                    case MessageEventType.Download:
                        writeDown.WriteLine(strLog);
                        break;
                }
                writeUp.Close();  //关闭日志文件
                writeUp.Dispose();
                writeUp = null;

                writeDown.Close();  //关闭日志文件
                writeDown.Dispose();
                writeDown = null;

            }
            catch(Exception eExp)
            {
                Console.WriteLine("*************************");
                Console.WriteLine(eExp.Message);
                Console.WriteLine(eExp.ToString());
            }
           // eventLog.Set();
        }
        /// <summary>
        /// 写错误文件
        /// </summary>
        /// <param name="strErr"></param>
        public static void WriteErrorLog(string strErr,object e)
        {

            //eventErr.WaitOne();
            try
            {

                //if (traceErr == null)
                //{
                //    ConsoleTraceListener myConsoleLitener = new ConsoleTraceListener();
                //    if (!Directory.Exists("Log"))
                //        Directory.CreateDirectory("Log");
                //    traceErr = new TraceSource("Err");
                //    string filename = string.Format(@"Log\ErrorLog{0}.txt", DateTime.Now.ToString("yyyyMMdd"));
                //    if (!File.Exists(filename))
                //        File.Create(filename);
                //    StreamWriter errFile = File.AppendText(filename);
                //    TextWriterTraceListener errListener = new TextWriterTraceListener(errFile);
                //    traceErr.Listeners.Add(errListener);
                //    traceErr.Listeners.Add(myConsoleLitener);

                //    Trace.Listeners.Add(myConsoleLitener);

                //}

                ////traceErr.Listeners[1].WriteLine(("Error: " +strErr);
                //traceErr.Listeners[1].WriteLine("****************************************");
                //traceErr.Listeners[1].WriteLine(strErr + " " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                //traceErr.Listeners[1].WriteLine(e.ToString(), "Error: ");
                //traceErr.Listeners[1].WriteLine("----------------------------------------");
                //traceErr.Listeners[1].WriteLine("                                        ");
                //traceErr.Flush();
                if (!Directory.Exists("Log"))
                    Directory.CreateDirectory("Log");
                string filename = string.Format(@"Log\ErrorLog{0}.txt", DateTime.Now.ToString("yyyyMMdd"));
                StreamWriter write = new StreamWriter(filename, true);                //文件写入
                write.WriteLine("****************************************");
                write.WriteLine(strErr + " " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                write.WriteLine(e.ToString(), "Error: ");
                write.WriteLine("----------------------------------------");
                write.WriteLine("                                        ");
                write.Close();  //关闭日志文件
                write.Dispose();
                write = null;             
            }
            catch(Exception elog)
            {
                Console.WriteLine("*************************");
                Console.WriteLine(elog.Message);
                Console.WriteLine(elog.ToString());
            }
           // eventErr.Set();
        }

    }
}

posted on 2008-11-21 13:30  lexod  阅读(529)  评论(0编辑  收藏  举报