/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="FunName"></param> /// <param name="LogMsg"></param> public void WriteFrameLog(object sender, string FunName, LogFrameInfo LogMsg) { lock (objLock) { System.Diagnostics.Debug.Assert(LogMsg != null); lstRunLog.Enqueue(LogMsg); } }
/// <summary> /// 线程函数,必须保证只有一个线程写日志 /// </summary> public void DoWork() { while (true) { if (CLDC_DataCore.Const.GlobalUnit.ApplicationIsOver) { break; } //lstRunLog.TrimExcess(); if (lstRunLog.Count > 0) { try { if (_Con.State != System.Data.ConnectionState.Open) { _Con.Open(); } LogFrameInfo _tagLog = lstRunLog.Peek(); if (_tagLog != null) { //这里写数据库 OleDbCommand _Cmd = _Con.CreateCommand(); _Cmd.CommandTimeout = CmdTimeOut; _Cmd.CommandText = _tagLog.getStrSQL(); if (1 == _Cmd.ExecuteNonQuery()) { lstRunLog.Dequeue(); } _Cmd.Dispose(); } } catch (Exception EX) { EX.ToString(); string logPath = "/Log/Thread/LogThread-" + DateTime.Now.ToString("yyyy-MM-dd") + ".log"; //WriteLog(logPath, this, "DoWork", EX.Message + "\r\n" + EX.StackTrace); } } System.Threading.Thread.Sleep(SleepTime); } }
/// <summary> /// 日志入口 /// </summary> /// <param name="LogMsg"></param> public void WriteFrameLog(LogFrameInfo LogMsg) { WriteFrameLog(null, "", LogMsg); }