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