Exemple #1
0
 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()));
 }
Exemple #2
0
        /// <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;
        }
Exemple #3
0
        /// <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;
        }
Exemple #4
0
        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);
                }
            }
        }
Exemple #5
0
        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;
            }
        }
Exemple #6
0
        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);
                }
            }
        }