Exemple #1
0
        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);
        }
Exemple #2
0
 public CurrencyController(ICurrencyConverterService currencyConverterService, IRequestLoggerService requestLoggerService,
                           CurrencyConverterContext context)
 {
     _currencyConverterService = currencyConverterService;
     _requestLoggerService     = requestLoggerService;
     _context = context;
 }
Exemple #3
0
        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);
            }
        }
Exemple #4
0
 public LogController(IRequestLoggerService requestLoggerService)
 {
     _requestLoggerService = requestLoggerService;
 }