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);
        }
예제 #2
0
        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);
                }
            }
        }
예제 #3
0
        public async Task AddAsync(EventLog entity)
        {
            await _eventLogRepository.AddAsync(entity);

            await _unitOfWork.Complete();
        }