public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext) { _Logger.Log(LogLevel.Info, String.Format("Executed action named {0} for request {1} by {2} from {3}.", actionContext.ActionDescriptor.ActionName, actionContext.Request.RequestUri, "User", actionContext.Request.GetClientIp())); }
/// <summary> /// Throw an exception if record is dirty (e.g. has been modified by another user) /// </summary> /// <param name="entityName"></param> /// <param name="entityId"></param> /// <param name="modifiedUserName"></param> /// <param name="modifiedDate"></param> /// <param name="operateType"></param> /// <param name="_logger"></param> public static void ThrowExceptionIfRecordHasBeenModified(string entityName, object entityId, string modifiedUserName, DateTime modifiedDate, OperateType operateType, ISystemLogger _logger) { string errorMsg = string.Format("{0}{1}失败:该记录已被{2}于{3}修改,请刷新页面重试!", operateType == OperateType.Update ? "更新" : "删除", entityName, modifiedUserName, modifiedDate.ToString(DATE_FORMAT)); var e = new Exception(errorMsg); _logger.Log(LogLevel.Error, errorMsg + string.Format("(记录ID: {0})。", entityId.ToString()), e); throw e; }
/// <summary> /// Throw an exception if records not exists /// </summary> /// <param name="entityName"></param> /// <param name="entityId"></param> /// <param name="operateType"></param> /// <param name="_logger"></param> public static void ThrowExceptionIfRecordNotExists(string entityName, object entityId, OperateType operateType, ISystemLogger _logger) { string errorMsg = string.Format("{0}{1}失败。可能的原因:1. 记录不存在 2.已被其他用户删除 3.不在操作权限范围内", operateType == OperateType.Update ? "更新" : "删除", entityName); var e = new Exception(errorMsg); _logger.Log(LogLevel.Error, errorMsg + string.Format("(记录ID: {0}).", entityId.ToString()), e); throw e; }
public void InitData() { var version = _context.Set <InitialDataHistory>().FirstOrDefault(s => s.Id == _version.VersionId); if (version == null || !version.IsUpdated) { #region Initialize // Each app's initial data go here Initialize(); #endregion var target = _context.Set <InitialDataHistory>().Where(s => s.Id == _version.VersionId).FirstOrDefault(); if (target != null) { target.IsUpdated = true; } else { var initialHistory = new InitialDataHistory { Id = _version.VersionId, Version = _version.VersionNo, Description = _version.Description, IsUpdated = true, LastEditUserId = Consts.SuperUserId.ToString(), LastEditTime = System.DateTime.Now }; _context.Set <InitialDataHistory>().Add(initialHistory); } try { _context.SaveChanges(); _logger.Info("===============> Seed_" + _version.VersionNo + " executed successful!"); } catch (System.Exception e) { _logger.Log(LogLevel.Error, "Initial data error: " + e.Message); } } }
public new int SaveChanges() { try { ChangeTracker.DetectChanges(); var nowTime = DateTime.Now; string userId = Consts.SuperUserId; if (Thread.CurrentPrincipal.Identity.IsAuthenticated) { var identities = Thread.CurrentPrincipal.Identity.Name.Split(new[] { '@' }); if (identities.Length == 3) { userId = identities[2]; } } var objectContext = ((IObjectContextAdapter)this).ObjectContext; var entries = objectContext.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified); foreach (ObjectStateEntry entry in entries) { if (entry.Entity != null) { var mutableObj = entry.Entity as IMutable; if (mutableObj != null) { if (entry.State == EntityState.Added) { mutableObj.CreateUserId = userId; mutableObj.CreateTime = nowTime; } mutableObj.LastUpdateUserId = userId; mutableObj.LastUpdateTime = nowTime; } } } return(base.SaveChanges()); } catch (DbEntityValidationException e) { foreach (var eve in e.EntityValidationErrors) { var errorMessage = String.Format("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:", eve.Entry.Entity.GetType().Name, eve.Entry.State); Debug.WriteLine(errorMessage); _logger.Log(LogLevel.Error, errorMessage); foreach (var ve in eve.ValidationErrors) { var propertyMessage = String.Format("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage); _logger.Log(LogLevel.Error, propertyMessage); Debug.WriteLine(propertyMessage); } } throw; } catch (DbUpdateConcurrencyException e) { _logger.Log(LogLevel.Error, e.Message, e); throw new Exception("该记录已被其他用户修改或删除,请刷新页面后重试。"); } catch (Exception e) { _logger.Log(LogLevel.Error, e.Message, e); if (e.InnerException != null) { _logger.Log(LogLevel.Error, e.InnerException.Message, e.InnerException); } throw; } }
static public void Append(Severity severity, string message) { if (_instance == null) { _instance = new Logger(); } string caller = ""; if ((int)MinSeverity >= (int)Severity.DEBUG) { StackTrace stackTrace = new StackTrace(); caller = stackTrace.GetFrame(1).GetMethod().ReflectedType.Name + "." + stackTrace.GetFrame(1).GetMethod().Name; if (string.IsNullOrEmpty(caller)) { caller = stackTrace.GetFrame(2).GetMethod().ReflectedType.Name + "." + stackTrace.GetFrame(2).GetMethod().Name; } } if ((int)severity <= (int)MinSeverity) { string logLine = DateTime.Now.ToString("hh:mm:ss") + "; " + severity.ToString().PadRight(8) + "; " + caller + "; " + message; if (logToConsole) // TODO : will we keep colourized output or just end up writing logline? { lock (ConsoleLock){ Console.Write(DateTime.Now.ToString("hh:mm:ss") + "; "); switch (severity) { case Severity.CRITICAL: Console.ForegroundColor = ConsoleColor.Red; break; case Severity.ERROR: Console.ForegroundColor = ConsoleColor.DarkRed; break; case Severity.WARNING: Console.ForegroundColor = ConsoleColor.Yellow; break; case Severity.NOTICE: Console.ForegroundColor = ConsoleColor.Cyan; break; case Severity.INFO: Console.ForegroundColor = ConsoleColor.DarkGreen; break; default: Console.ForegroundColor = ConsoleColor.White; break; } Console.Write(severity.ToString().PadRight(8)); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("; " + caller + "; " + message + Environment.NewLine); } } if (logToFile) { try{ SW.WriteLine(logLine); } catch (Exception _e) { Console.WriteLine("Logger : unable to write to '" + ConfigurationManager.AppSettings["Logger.Logfile"] + "' : " + _e.Message); /*if(logToSyslog){ * Mono.Unix.Native.Syscall.syslog(Mono.Unix.Native.SyslogLevel.LOG_ALERT, "Could not write to log file : "+_e.Message); * }*/ } } if (logToSyslog) { sysLogger.Log(severity, message); } } }