123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- using WCS.Data.Models;
- using System.Linq;
- namespace WCS.Data.Utils
- {
- /// <summary>
- /// 日志消息处理辅助类
- /// </summary>
- public class LogMessageHelper
- {
- /// <summary>
- /// 记录日志消息
- /// </summary
- /// <param name="isWriteLog4net">是否写入log4net</param>
- /// <param name="message">消息</param>
- 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());
- }
- }
- /// <summary>
- /// 记录日志消息
- /// </summary>
- /// <param name="message">消息</param>
- /// <param name="ex">异常类</param>
- /// <param name="isWriteLog4net">是否写入log4net</param>
- 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());
- }
- }
- /// <summary>
- /// 记录日志消息
- /// </summary>
- /// <param name="ex">异常类</param>
- /// <param name="isWriteLog4net">是否写入log4net</param>
- 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<WCS_LOG>(it => new WCS_LOG() { LOG_EDITDATETIME = DateTime.Now, LOG_INFODTL = logmsg.LOG_INFODTL })
- .Where(it => it.LOG_ID == logmessage.LOG_ID)
- .ExecuteCommand();
- }
- });
- }
- }
- }
|