using System; using System.Collections.Generic; using System.Collections; using System.Text; using System.IO; using System.Timers;
namespace ComUtil { public class LogWriter { private LogWriter() { logtimer.Stop(); logtimer.Elapsed += new ElapsedEventHandler(logtimer_Elapsed); }
private void logtimer_Elapsed(object sender, ElapsedEventArgs e) { string rootpath = System.AppDomain.CurrentDomain.BaseDirectory;
if (!Directory.Exists(rootpath + "\\logs")) { Directory.CreateDirectory(rootpath + "\\logs"); }
while(LogList.Count>0) { StreamWriter Writer = new StreamWriter(rootpath + "\\logs\\" + LogList[0]["logfilename"].ToString(), true); StringBuilder wb = new StringBuilder();
wb.Append("["); wb.Append(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); wb.Append("]"); wb.Append("["); wb.Append(LogList[0]["logtype"].ToString()); wb.Append("]"); wb.Append(LogList[0]["msg"].ToString()); wb.Append("\r\n"); Writer.Write(wb.ToString()); wb = wb.Remove(0, wb.Length); Writer.Flush(); Writer.Close();
LogList.RemoveAt(0); }
logtimer.Stop(); //关闭定时器
}
private List<Hashtable> LogList = new List<Hashtable>(); private static LogWriter mInstance = null;
private Timer logtimer = new Timer(1000);
public static LogWriter GetInstance() { if (mInstance==null) { mInstance = new LogWriter(); } return mInstance; }
public void WriteMessage(string msg,string logtype,string logfilename) {
Hashtable newlog = new Hashtable(); newlog.Add("msg", msg); newlog.Add("logtype", logtype); newlog.Add("logfilename", logfilename); LogList.Add(newlog); logtimer.Start(); }
} }
|