예제 #1
0
        private void RecordException(AspNetDeployEntities entities, ExceptionEntry parentException, Exception exception)
        {
            ExceptionEntry exceptionEntry = new ExceptionEntry();

            exceptionEntry.Message    = exception.Message;
            exceptionEntry.Source     = exception.Source;
            exceptionEntry.StackTrace = exception.StackTrace;
            exceptionEntry.TypeName   = exception.GetType().FullName;
            entities.ExceptionEntry.Add(exceptionEntry);

            if (parentException != null)
            {
                parentException.InnerExceptionEntry = exceptionEntry;
            }
            else
            {
                AspNetDeployExceptionEntry aspNetDeployExceptionEntry = new AspNetDeployExceptionEntry();
                aspNetDeployExceptionEntry.TimeStamp      = DateTime.UtcNow;
                aspNetDeployExceptionEntry.ExceptionEntry = exceptionEntry;
                entities.AspNetDeployExceptionEntry.Add(aspNetDeployExceptionEntry);
            }

            if (exception.InnerException != null)
            {
                this.RecordException(entities, exceptionEntry, exception.InnerException);
            }

            entities.SaveChanges();
        }
        public void Log(Exception exception, int?userId)
        {
            AspNetDeployEntities entities = new AspNetDeployEntities();

            AspNetDeployExceptionEntry aspNetDeployExceptionEntry = new AspNetDeployExceptionEntry();

            aspNetDeployExceptionEntry.TimeStamp      = DateTime.UtcNow;
            aspNetDeployExceptionEntry.UserId         = userId;
            aspNetDeployExceptionEntry.ExceptionEntry = this.CreateAndSaveExceptionEntryRecursive(entities, null, exception);
            entities.AspNetDeployExceptionEntry.Add(aspNetDeployExceptionEntry);

            entities.SaveChanges();
        }
예제 #3
0
        public ActionResult Details(int id)
        {
            this.CheckPermission(UserRoleAction.ViewLogs);

            AspNetDeployExceptionEntry aspNetDeployExceptionEntry = this.Entities.AspNetDeployExceptionEntry
                                                                    .Include("ExceptionEntry.InnerExceptionEntry")
                                                                    .Include("ExceptionEntry.ExceptionData")
                                                                    .Include("User")
                                                                    .OrderByDescending(ex => ex.TimeStamp)
                                                                    .Take(100)
                                                                    .First(ex => ex.Id == id);

            this.ViewBag.aspNetDeployExceptionEntry = aspNetDeployExceptionEntry;

            return(this.View());
        }
예제 #4
0
        private void RecordException(AspNetDeployEntities entities, ExceptionEntry parentException, IExceptionInfo lastException, MachinePublicationLog machinePublicationLog)
        {
            ExceptionEntry exceptionEntry = new ExceptionEntry();

            machinePublicationLog.Exception = exceptionEntry;
            exceptionEntry.Message          = lastException.Message;
            exceptionEntry.Source           = lastException.Source;
            exceptionEntry.StackTrace       = lastException.StackTrace;
            exceptionEntry.TypeName         = lastException.TypeName;
            entities.ExceptionEntry.Add(exceptionEntry);

            if (parentException != null)
            {
                parentException.InnerExceptionEntry = exceptionEntry;
            }
            else
            {
                AspNetDeployExceptionEntry aspNetDeployExceptionEntry = new AspNetDeployExceptionEntry();
                aspNetDeployExceptionEntry.TimeStamp      = DateTime.UtcNow;
                aspNetDeployExceptionEntry.ExceptionEntry = exceptionEntry;
                entities.AspNetDeployExceptionEntry.Add(aspNetDeployExceptionEntry);
            }

            foreach (IExceptionDataInfo exceptionDataInfo in lastException.ExceptionData)
            {
                ExceptionEntryData data = new ExceptionEntryData();
                data.ExceptionEntry = exceptionEntry;
                data.IsProperty     = exceptionDataInfo.IsProperty;
                data.Name           = exceptionDataInfo.Name;
                data.Value          = exceptionDataInfo.Value;
                entities.ExceptionEntryData.Add(data);
            }

            if (lastException.InnerException != null)
            {
                this.RecordException(entities, exceptionEntry, lastException.InnerException, machinePublicationLog);
            }
        }