/// <summary> /// Notify Admins of logging summary /// </summary> public void NotifyAdmins() { const string subjectlineDateFormat = "dd/MM/yyyy HH:mm"; var log4NetPath = ConfigurationManager.AppSettings.Get("BaseLog4NetUrl"); this.ToAddress = ConfigurationManager.AppSettings.Get("ErrorReporting.ToAddress"); this.ToName = ConfigurationManager.AppSettings.Get("ErrorReporting.ToName"); this.FromAddress = ConfigurationManager.AppSettings.Get("ErrorReporting.FromAddress"); this.FromName = ConfigurationManager.AppSettings.Get("ErrorReporting.FromName"); this.SubjectLine = string.Format( "Log Summary for period {0} - {1}", this.StartDate.ToString(subjectlineDateFormat), this.EndDate.ToString(subjectlineDateFormat)); var summaryText = new StringBuilder(); using (var db = new LogDbContext()) { var logSummary = db.Logs.GetLogSummary(this.StartDate, this.EndDate); var totalFatal = 0; var totalError = 0; foreach (var summary in logSummary) { summaryText.AppendLine(summary.Category); summaryText.AppendLine(); summaryText.AppendLine(); summaryText.Append("Fatal: "); summaryText.Append(summary.Fatal.ToString(CultureInfo.InvariantCulture)); summaryText.Append(" (" + log4NetPath + "?filter=" + summary.Category + "&levelfilter=" + "FATAL )"); summaryText.AppendLine(); summaryText.Append("Errors: "); summaryText.Append(summary.Error.ToString(CultureInfo.InvariantCulture)); summaryText.Append(" (" + log4NetPath + "?filter=" + summary.Category + "&levelfilter=" + "ERROR )"); summaryText.AppendLine(); summaryText.AppendLine(); totalFatal += summary.Fatal; totalError += summary.Error; } var summaryHeader = new StringBuilder(); summaryHeader.AppendFormat("{0} Fatal, and {1} Errors received during this period.", totalFatal, totalError); summaryHeader.AppendLine(); this.BodyText = summaryHeader.ToString() + "\n" + summaryText.ToString() + log4NetPath; if (totalFatal + totalError > 0) { this.Send(); } } }
public ActionResult GetReport(GridSettings gridSettings) { using (var db = new LogDbContext()) { // create json data int pageIndex = gridSettings.PageIndex; int pageSize = gridSettings.PageSize; int totalRecords = db.Logs.Count(); var totalPages = (int) Math.Ceiling(totalRecords/(float) pageSize); var startRow = (pageIndex - 1) * pageSize; var endRow = startRow + pageSize; if (String.IsNullOrEmpty(gridSettings.SortColumn)) { gridSettings.SortColumn = "Date"; } var jsonData = new { total = totalPages, page = pageIndex, records = totalRecords, rows = db.Logs.OrderByField(gridSettings.SortColumn, gridSettings.SortOrder == "asc").Skip(startRow).Take(gridSettings.PageSize).ToArray() }; return Json(jsonData, JsonRequestBehavior.AllowGet); } }
// // GET: /Logging/Report/ public ActionResult Index() { IEnumerable<LogSummary> summary; IEnumerable<Log> logs; using (var db = new LogDbContext()) { summary = db.Logs.GetLogSummary(7).ToList(); logs = db.Logs.GetPage(1, 20).ToList(); } return View(new ReportViewModel { LogSummary = summary, Logs = logs }); }
protected override void Append(LoggingEvent loggingEvent) { try { using (var db = new LogDbContext()) { db.Logs.Add( new Log { Id = Guid.NewGuid(), UserName = loggingEvent.UserName, Date = DateTime.UtcNow, Level = loggingEvent.Level.ToString(), Message = loggingEvent.RenderedMessage, Thread = loggingEvent.ThreadName, Exception = loggingEvent.GetExceptionString(), Logger = loggingEvent.LoggerName, Custom = string.Empty, Category = loggingEvent.LoggerName }); db.SaveChanges(); } } catch (Exception e) { try { Trace.Write("Error writing log to database {0}", e.Message); EventLog.WriteEntry("Logging", "Error writing log to database", EventLogEntryType.Error); } catch (Exception) { // Ignore error } } }