using iWareCommon.Utils; using iWareSql; using iWareSql.Entity; using iWareSql.Orm; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Threading.Tasks; using System.Linq; using iWareSql.DBModel; namespace iWareModel { /// /// 异常对象处理类 /// public class SysExceptionInfoHandler { /// /// 初始化异常信息类(仅仅是获取异常信息对象) /// /// 入参类 /// 日志类型 /// 当前命名空间名 /// 方法名 /// 入参类 /// 异常方向,默认是WIP接收 /// 消息来源 /// public static Base_SysExceptionInfo GetExceptionInfo(LogType _logType, string namespaceName, string exceptionFun, T param, ExceptionLevel exceptionLevel = ExceptionLevel.BusinessError, string key1 = "", string key2 = "", ExceptionSource exceptionSource = ExceptionSource.Receive , string msgSource = "") { Base_SysExceptionInfo exception = new Base_SysExceptionInfo() { Id = Guid.NewGuid().ToString(), module = _logType.ToString(), creator = "sys", key1 = key1, key2 = key2, exceptionLevel = Convert.ToInt32(exceptionLevel).ToString(),//异常级别:默认是业务错误 exceptionFun = namespaceName + "." + exceptionFun,//异常方法名 exceptionSource = Convert.ToInt32(exceptionSource).ToString(),//异常方向 sourceData = JsonConvert.SerializeObject(param), //入参 }; return exception; } /// /// Error情况下的异常信息赋值 /// /// /// public static void GetExceptionInfoForError(string errMsg, Exception ex, ref Base_SysExceptionInfo exception) { exception.exceptionMsg = errMsg + ":" + ex.Message + "|错误发生位置:" + ex.StackTrace;//增加错误位置 【EditBy shaocx,2020-04-01】 exception.exceptionLevel = Convert.ToInt32(ExceptionLevel.Error).ToString(); exception.exceptionData = JsonConvert.SerializeObject(ex); //*/ } /// /// 插入异常数据内容 /// /// 异常对象 /// 是否需要写入文本日志 public static void InsertExceptionInfo(Base_SysExceptionInfo eie, bool isWriteTextLog = false) { Task.Run(() => { try { eie.createTime = DateTime.Now; eie.host = MachineHelper.GetHostName(); using (DbModel dbContext = new DbModel()) { dbContext.Base_SysExceptionInfo.Add(eie); dbContext.SaveChanges(); } if (isWriteTextLog) { Log4NetHelper.WriteErrorLog((LogType)Enum.Parse(typeof(LogType), eie.module), "插入异常数据内容:" + JsonConvert.SerializeObject(eie)); } } catch (Exception ex) { Log4NetHelper.WriteErrorLog((LogType)Enum.Parse(typeof(LogType), eie.module), "插入异常数据内容出现异常:" + JsonConvert.SerializeObject(ex) + ",eie:" + JsonConvert.SerializeObject(eie)); } }); } } }