public async Task Invoke(HttpContext context, IRequestLoggerService requestLoggerService) { var requestLog = new RequestLog() { Datetime = DateTime.UtcNow, Username = context.User.Identity.Name }; context.Request.EnableBuffering(); var buffer = new byte[Convert.ToInt32(context.Request.ContentLength)]; await context.Request.Body.ReadAsync(buffer, 0, buffer.Length); var bodyAsText = Encoding.UTF8.GetString(buffer); requestLog.Path = context.Request.Path; requestLog.QueryString = context.Request.QueryString.ToString(); requestLog.Body = bodyAsText; context.Request.Body.Position = 0; await _next(context); requestLog.StatusCode = (HttpStatusCode)context.Response.StatusCode; await requestLoggerService.Add(requestLog); PreventOverGrowth(requestLoggerService); }
public CurrencyController(ICurrencyConverterService currencyConverterService, IRequestLoggerService requestLoggerService, CurrencyConverterContext context) { _currencyConverterService = currencyConverterService; _requestLoggerService = requestLoggerService; _context = context; }
private static void PreventOverGrowth(IRequestLoggerService requestLoggerService) { if (requestLoggerService.Find().Count() < RequestLoggerServiceExtension.MaxLogCount) { return; } var last = requestLoggerService.Find().OrderBy(z => z.Datetime).FirstOrDefault(); if (last != null) { requestLoggerService.Remove(last); } }
public LogController(IRequestLoggerService requestLoggerService) { _requestLoggerService = requestLoggerService; }