private async ValueTask LogResponse(HttpResponse response, Stream body, CancellationToken cancellationToken)
        {
            var logMessage = await _responseHandler.Handle(response, body, cancellationToken);

            var options = _options.Value;

            if (options.EnableConsoleLogging)
            {
                var json = JsonSerializer.Serialize(logMessage, options.JsonSerializerOptions);

                _responseLogger.LogInformation(json);
            }

            await _store.StoreAsync(logMessage, cancellationToken);
        }
Example #2
0
        public async ValueTask LogAsync(HttpContext context, CancellationToken cancellationToken = default)
        {
            var requestLog = await _requestHandler.Handle(context.Request, cancellationToken);

            var responseLog = await _responseHandler.Handle(context.Response, cancellationToken);

            var exceptionFeature = context.Features.Get <IExceptionHandlerPathFeature>();

            var logContext = new LogContext(Activity.Current?.Id ?? context.TraceIdentifier,
                                            requestLog, responseLog,
                                            context.Request.Protocol, _options.HandleTimestamp());

            if (exceptionFeature?.Error != null)
            {
                logContext.SetError(exceptionFeature.Error);
            }

            _logger.Log(_options.Level, default, logContext, exceptionFeature?.Error, _options.Formatter);