private void WriteLogMessage(LogEventInfo logEvent) { var message = this.Layout.Render(logEvent); var messageElements = message.Split('|'); if(messageElements.Length != 4 && messageElements.Length != 8) { ThrowInvalidLayoutException(message); } using(var context = new LoggingContext(string.Format("name={0}", this.ConnectionStringName))) { var entry = new LogEntry { TimeStamp = DateTime.Parse(messageElements[0]), Level = messageElements[1], Logger = messageElements[2], Message = messageElements[3] }; if(logEvent.Exception != null && messageElements.Length > 4) { entry.ExceptionType = messageElements[4]; entry.Operation = messageElements[5]; entry.ExceptionMessage = messageElements[6]; entry.StackTrace = messageElements[7]; } context.Log.Add(entry); context.SaveChanges(); } }
public ViewResult Index() { logger.Trace("/Log/Index called"); using(var context = new LoggingContext("LoggingContext")) { var model = new LogModel { LogEntries = context.Log.OrderByDescending(e => e.TimeStamp).ToList() }; return View(model); } }