private void HandleRequestLogged(Browser b, HttpRequestLog req)
		{
			if (this.RequestLogged != null)
			{
				this.RequestLogged(b, req);
			}
		}
Ejemplo n.º 2
0
 protected void SetupTraceInfo()
 {
     ViewData["TraceIdent"] = HttpContext.TraceIdentifier;
     ViewData["NumLogs"]    = HttpRequestLog.GetHttpRequestLog(HttpContext.TraceIdentifier).RequestLogs.Count;
 }
Ejemplo n.º 3
0
 public JsonResult GetLog(string traceIdentifier)
 {
     return(Json(HttpRequestLog.GetHttpRequestLog(traceIdentifier)));
 }
Ejemplo n.º 4
0

        
Ejemplo n.º 5
0
 public TraceIdentBaseDto(string traceIdentifier)
 {
     TraceIdentifier = traceIdentifier;
     NumLogs         = HttpRequestLog.GetHttpRequestLog(traceIdentifier).RequestLogs.Count;
 }
Ejemplo n.º 6
0
 public Ch02_HttpRequestLog()
 {
     HttpRequestLog.ClearOldLogs(-1);
 }
Ejemplo n.º 7
0
 void HandleRequestLogged(Browser b, HttpRequestLog req)
 {
     this.LastRequest = req;
 }
Ejemplo n.º 8
0
 public static void RequestLog(this ILogger logger, HttpRequestLog requestLog) => logger.Log(
     LogLevel.Information,
     new EventId(1, "RequestLog"),
     requestLog,
     exception: null,
     formatter: HttpRequestLog.Callback);
Ejemplo n.º 9
0
    private async Task InvokeInternal(HttpContext context)
    {
        var options = _options.CurrentValue;
        RequestBufferingStream?requestBufferingStream = null;
        Stream?originalBody = null;

        if ((HttpLoggingFields.Request & options.LoggingFields) != HttpLoggingFields.None)
        {
            var request = context.Request;
            var list    = new List <KeyValuePair <string, object?> >(
                request.Headers.Count + DefaultRequestFieldsMinusHeaders);

            if (options.LoggingFields.HasFlag(HttpLoggingFields.RequestProtocol))
            {
                AddToList(list, nameof(request.Protocol), request.Protocol);
            }

            if (options.LoggingFields.HasFlag(HttpLoggingFields.RequestMethod))
            {
                AddToList(list, nameof(request.Method), request.Method);
            }

            if (options.LoggingFields.HasFlag(HttpLoggingFields.RequestScheme))
            {
                AddToList(list, nameof(request.Scheme), request.Scheme);
            }

            if (options.LoggingFields.HasFlag(HttpLoggingFields.RequestPath))
            {
                AddToList(list, nameof(request.PathBase), request.PathBase);
                AddToList(list, nameof(request.Path), request.Path);
            }

            if (options.LoggingFields.HasFlag(HttpLoggingFields.RequestQuery))
            {
                AddToList(list, nameof(request.QueryString), request.QueryString.Value);
            }

            if (options.LoggingFields.HasFlag(HttpLoggingFields.RequestHeaders))
            {
                FilterHeaders(list, request.Headers, options._internalRequestHeaders);
            }

            if (options.LoggingFields.HasFlag(HttpLoggingFields.RequestBody))
            {
                if (MediaTypeHelpers.TryGetEncodingForMediaType(request.ContentType,
                                                                options.MediaTypeOptions.MediaTypeStates,
                                                                out var encoding))
                {
                    originalBody           = request.Body;
                    requestBufferingStream = new RequestBufferingStream(
                        request.Body,
                        options.RequestBodyLogLimit,
                        _logger,
                        encoding);
                    request.Body = requestBufferingStream;
                }
                else
                {
                    _logger.UnrecognizedMediaType();
                }
            }

            var httpRequestLog = new HttpRequestLog(list);

            _logger.RequestLog(httpRequestLog);
        }

        ResponseBufferingStream? responseBufferingStream = null;
        IHttpResponseBodyFeature?originalBodyFeature     = null;

        try
        {
            var response = context.Response;

            if (options.LoggingFields.HasFlag(HttpLoggingFields.ResponseBody))
            {
                originalBodyFeature = context.Features.Get <IHttpResponseBodyFeature>() !;

                // TODO pool these.
                responseBufferingStream = new ResponseBufferingStream(originalBodyFeature,
                                                                      options.ResponseBodyLogLimit,
                                                                      _logger,
                                                                      context,
                                                                      options.MediaTypeOptions.MediaTypeStates,
                                                                      options);
                response.Body = responseBufferingStream;
                context.Features.Set <IHttpResponseBodyFeature>(responseBufferingStream);
            }

            await _next(context);

            if (requestBufferingStream?.HasLogged == false)
            {
                // If the middleware pipeline didn't read until 0 was returned from readasync,
                // make sure we log the request body.
                requestBufferingStream.LogRequestBody();
            }

            if (responseBufferingStream == null || responseBufferingStream.FirstWrite == false)
            {
                // No body, write headers here.
                LogResponseHeaders(response, options, _logger);
            }

            if (responseBufferingStream != null)
            {
                var responseBody = responseBufferingStream.GetString(responseBufferingStream.Encoding);
                if (!string.IsNullOrEmpty(responseBody))
                {
                    _logger.ResponseBody(responseBody);
                }
            }
        }
        finally
        {
            responseBufferingStream?.Dispose();

            if (originalBodyFeature != null)
            {
                context.Features.Set(originalBodyFeature);
            }

            requestBufferingStream?.Dispose();

            if (originalBody != null)
            {
                context.Request.Body = originalBody;
            }
        }
    }
Ejemplo n.º 10
0
 static void OnBrowserRequestLogged(Browser req, HttpRequestLog log)
 {
     ColoredConsoleWrite(ConsoleColor.Yellow, "[REQUEST]: " + log.Method + " request to https://www.vfsvisaonline.com/poland-ukraine-appointment/");
     ColoredConsoleWrite(ConsoleColor.Yellow, "[REQUEST]: Response status code: " + log.ResponseCode);
 }