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();
}
}
}