/// <summary> /// 添加异常数据 /// </summary> /// <param name="userInfo">用户</param> /// <param name="entity">实体</param> /// <param name="statusCode">返回状态码</param> /// <param name="statusMessage">返回状态信息</param> /// <returns>主键</returns> public string Add(UserInfo userInfo, CiExceptionEntity entity, out string statusCode, out string statusMessage) { string returnValue = string.Empty; string returnCode = string.Empty; string returnMessage = string.Empty; var parameter = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, string.Empty); ServiceUtil.ProcessRDIReadDb(userInfo, parameter, dbProvider => { var manager = new CiExceptionManager(dbProvider, userInfo); returnValue = manager.AddEntity(entity); returnMessage = manager.GetStateMessage(returnCode); }); statusCode = returnCode; statusMessage = returnMessage; return(returnValue); }
/// <summary> /// 记录异常情况 /// </summary> /// <param name="dbProvider">数据库连接</param> /// <param name="userInfo">用户</param> /// <param name="ex">异常</param> /// <returns>受影响的行数</returns> public static int LogException(IDbProvider dbProvider, UserInfo userInfo, Exception ex) { // 在控制台需要输出错误信息 Console.ForegroundColor = ConsoleColor.Red; Console.Write(ex.InnerException); Console.ForegroundColor = ConsoleColor.White; Console.WriteLine(string.Empty); var returnValue = 0; // 系统里应该可以配置是否记录异常现象 if (!SystemInfo.LogException) { return(returnValue); } // Windows系统异常中 if (SystemInfo.EventLog) { if (!System.Diagnostics.EventLog.SourceExists(SystemInfo.SoftName)) { System.Diagnostics.EventLog.CreateEventSource(SystemInfo.SoftName, SystemInfo.SoftFullName); } var eventLog = new System.Diagnostics.EventLog(); eventLog.Source = SystemInfo.SoftName; eventLog.WriteEntry(ex.Message, EventLogEntryType.Error); } // 判断一下数据库是否打开状态,若数据库都没能打开,还记录啥错误,不是又抛出另一个错误了? if (dbProvider != null && dbProvider.GetDbConnection() != null) { if (dbProvider.GetDbConnection().State == ConnectionState.Open) { var exceptionManager = new CiExceptionManager(dbProvider, userInfo); returnValue = exceptionManager.AddEntity(ex); } } return(returnValue); }