public override async Task OnExceptionAsync(ExceptionContext context) { if (_hostingEnviroment.IsProduction()) { _logger.LogError(1, context.Exception, context.Exception.Message); var data = new { Version = "v1.0", Application = "RBTemplate.IO", Source = "GlobalActionLoggerFilter", User = _user.Name, Hostname = context.HttpContext.Request.Host.Host, Url = context.HttpContext.Request.GetDisplayUrl(), DateTime = DateTime.Now, Method = context.HttpContext.Request.Method, StatusCode = context.HttpContext.Response.StatusCode, Data = context.Exception?.Message, StackTrace = context.Exception?.StackTrace }; var serializedData = JsonSerializer.Serialize(data); await _eventLogRepository.AddAsync( new EventLog() { DateLog = DateTime.Now, Data = serializedData }); } base.OnException(context); }
private async Task CreateEventLog( ClaimsPrincipal principal, EventEnum eventEnum, string message, string entityType, int entityId, string entityName, List <EventLogField> fields) { if (string.IsNullOrEmpty(message)) { throw new NotImplementedException("Message is required field"); } var userId = int.Parse(_appUserManager.GetUserId(principal)); var eventLog = new EventLog { Event = eventEnum, EntityId = entityId, EntityType = entityType, TimeStamp = DateTime.Now, UserId = userId, Message = message, EntityName = entityName }; var newEventLog = await _eventLogRepository.AddAsync(eventLog); if (eventEnum != EventEnum.Delete) { foreach (var field in fields.OrderBy(x => x.FieldName)) { field.EventLogId = newEventLog.Id; await _eventLogFieldRepository.AddAsync(field); } } }
public async Task AddAsync(EventLog entity) { await _eventLogRepository.AddAsync(entity); await _unitOfWork.Complete(); }