using System; using System.Collections.Generic; using System.Text; using WCS.Data.Models; using System.Linq; namespace WCS.Data.Utils { /// /// 日志消息处理辅助类 /// public class LogMessageHelper { /// /// 记录日志消息 /// 是否写入log4net /// 消息 public static void RecordLogMessage(string message, bool isWriteLog4net = true,string level= "ERROR") { try { System.Diagnostics.StackTrace ss = new System.Diagnostics.StackTrace(true); System.Reflection.MethodBase mb = ss.GetFrame(1).GetMethod(); //System.Reflection.MethodBase.GetCurrentMethod().Name; var log = new WCS_LOG(); log.LOG_WCSSYSTEM = BaseCurrent.WcsSystem; log.LOG_LEVEL = level; log.LOG_FUNC = mb.Name; log.LOG_INFO = message; log.LOG_INFODTL = string.Empty; log.LOG_ADDUSERNO = BaseCurrent.WcsSystem; log.LOG_ADDUSERNAME = BaseCurrent.WcsSystem; log.LOG_ADDDATETIME = DateTime.Now; log.LOG_EDITUSERNO = BaseCurrent.WcsSystem; log.LOG_EDITUSERNAME = BaseCurrent.WcsSystem; log.LOG_EDITDATETIME = DateTime.Now; if (isWriteLog4net) { Log4netHelper.Logger_Error.Error(message); } ThreadHelper.TaskThread(RecordLogMsg, log); } catch (Exception e) { Log4netHelper.Logger_Error.Error(e.ToString()); } } /// /// 记录日志消息 /// /// 消息 /// 异常类 /// 是否写入log4net public static void RecordLogMessage(string message, Exception ex, bool isWriteLog4net = true, string level = "ERROR") { try { var log = new WCS_LOG(); log.LOG_WCSSYSTEM = BaseCurrent.WcsSystem; log.LOG_LEVEL = LogLevelEnum.ERROR.ToString(); log.LOG_FUNC = ex.TargetSite.Name; log.LOG_INFO = message; log.LOG_INFODTL = ex.ToString(); log.LOG_ADDUSERNO = BaseCurrent.WcsSystem; log.LOG_ADDUSERNAME = BaseCurrent.WcsSystem; log.LOG_ADDDATETIME = DateTime.Now; log.LOG_EDITUSERNO = BaseCurrent.WcsSystem; log.LOG_EDITUSERNAME = BaseCurrent.WcsSystem; log.LOG_EDITDATETIME = DateTime.Now; if (isWriteLog4net) { Log4netHelper.Logger_Error.ErrorFormat("消息:{0} 异常详情:{1}", message, ex.ToString()); } ThreadHelper.TaskThread(RecordLogMsg, log); } catch (Exception e) { Log4netHelper.Logger_Error.Error(e.ToString()); } } /// /// 记录日志消息 /// /// 异常类 /// 是否写入log4net public static void RecordLogMessage(Exception ex, bool isWriteLog4net = true) { try { var log = new WCS_LOG(); log.LOG_WCSSYSTEM = BaseCurrent.WcsSystem; log.LOG_LEVEL = LogLevelEnum.ERROR.ToString(); log.LOG_FUNC = ex.TargetSite.Name; log.LOG_INFO = ex.Message; log.LOG_INFODTL = ex.ToString(); log.LOG_ADDUSERNO = BaseCurrent.WcsSystem; log.LOG_ADDUSERNAME = BaseCurrent.WcsSystem; log.LOG_ADDDATETIME = DateTime.Now; log.LOG_EDITUSERNO = BaseCurrent.WcsSystem; log.LOG_EDITUSERNAME = BaseCurrent.WcsSystem; log.LOG_EDITDATETIME = DateTime.Now; if (isWriteLog4net) { Log4netHelper.Logger_Error.Error(ex.ToString()); } ThreadHelper.TaskThread(RecordLogMsg, log); } catch (Exception e) { Log4netHelper.Logger_Error.Error(e.ToString()); } } private static void RecordLogMsg(WCS_LOG logmsg) { var logmessage = BaseCurrent.Wcs_LogSet.FirstOrDefault(v => v.LOG_INFO == logmsg.LOG_INFO); TryCachHelper.TryExecute((db) => { if (logmessage == null) { //插入日志 db.Insertable(logmsg).ExecuteCommand(); } else if (logmessage.LOG_EDITDATETIME.AddMilliseconds(60000) < DateTime.Now)//相同消息1分钟修改一次 { //更新日志时间 db.Updateable(it => new WCS_LOG() { LOG_EDITDATETIME = DateTime.Now, LOG_INFODTL = logmsg.LOG_INFODTL }) .Where(it => it.LOG_ID == logmessage.LOG_ID) .ExecuteCommand(); } }); } } }