public override void OnException(ExceptionContext context) { if (!_hostingEnvironment.IsDevelopment()) { return; } var logEntry = new Entities.LogEntryEntity() { TimeStamp = DateTime.UtcNow, ActionDescriptor = context.ActionDescriptor.DisplayName, IpAddress = context.HttpContext.Connection.RemoteIpAddress.ToString(), Message = context.Exception.Message, RequestId = Activity.Current?.Id ?? context.HttpContext.TraceIdentifier, RequestPath = context.HttpContext.Request.Path, Source = context.Exception.Source, StackTrace = context.Exception.StackTrace, Type = context.Exception.GetType().ToString(), User = context.HttpContext.User.HasClaim(x => x.Type == CustomClaimTypes.Email.ToString()) ? context.HttpContext.User.Claims.FirstOrDefault(x => x.Type == CustomClaimTypes.Email.ToString()).Value : null }; // save log in database _logEntryBL.CreataLogEntry(logEntry); // save log in file Logger.UserActionLoggin(JsonSerializeDeserializer.JsonString(logEntry), Serilog.Events.LogEventLevel.Error); var result = new ViewResult { ViewName = "CustomError" }; result.ViewData = new ViewDataDictionary(_modelMetadataProvider, context.ModelState); result.ViewData.Add("Exception", context.Exception); // TODO: Pass additional detailed data via ViewData context.Result = result; }
public void OnActionExecuting(ActionExecutingContext context) { Logger.UserActionLoggin(JsonSerializeDeserializer.JsonString(new SeriLogEntryEntity() { QueryString = context.HttpContext.Request.QueryString.Value, RequetForm = context.HttpContext.Request.HasFormContentType ? string.Join(",", context.HttpContext.Request.Form.Select(x => "\"" + x.Key + "\"" + " : " + "\"" + x.Value + "\"")) :"", TimeStamp = DateTime.UtcNow, ActionDescriptor = context.ActionDescriptor.DisplayName, IpAddress = context.HttpContext.Connection.RemoteIpAddress.ToString(), //Message = context.Exception.Message, RequestId = Activity.Current?.Id ?? context.HttpContext.TraceIdentifier, RequestPath = context.HttpContext.Request.Path, User = context.HttpContext.User.HasClaim(x => x.Type == CustomClaimTypes.Email.ToString()) ? context.HttpContext.User.Claims.FirstOrDefault(x => x.Type == CustomClaimTypes.Email.ToString()).Value : null }), Serilog.Events.LogEventLevel.Information); }