public HttpResponseMessageLogWriter(ILogger <HttpResponseMessageLogWriter> logger, ITrafficCometMiddlewaresAccessor trafficCometMiddlewaresAccessor, IWebEventBodyDocumentWriter webEventBodyDocumentWriter, IHttpContentReader httpContentReader) : base(logger, trafficCometMiddlewaresAccessor, webEventBodyDocumentWriter, httpContentReader) { }
public IEnumerable <string> Get([FromServices] ITrafficCometMiddlewaresAccessor cometAccessor) { cometAccessor.CustomParams.Add("Test custom param", "test value"); cometAccessor.RequestCustomParams.Add("Request test custom param", "test value"); cometAccessor.ResponseCustomParams.Add("Response test custom param", "test value"); return(new string[] { "value1", "value2" }); }
public async Task Invoke(HttpContext httpContext, ITrafficCometMiddlewaresAccessor trafficCometAccessor, IDynamicBodyReader dynamicBodyReader, IOptionsSnapshot <RequestReadMiddlewareConfig> config) { if (trafficCometAccessor == null) { throw new ArgumentNullException(nameof(trafficCometAccessor)); } if (dynamicBodyReader == null) { throw new ArgumentNullException(nameof(dynamicBodyReader)); } TrafficCometMiddlewaresAccessor internalTrafficCometAccessor = (TrafficCometMiddlewaresAccessor)trafficCometAccessor; internalTrafficCometAccessor.IgnoreRequest = !internalTrafficCometAccessor.IgnoreWholeRequest && config.IgnoreRequest(httpContext.Request.Path); if (!internalTrafficCometAccessor.IgnoreRequest) { MemoryStream originalRequestBody = new MemoryStream(); await httpContext.Request.Body.CopyToAsync(originalRequestBody); originalRequestBody.Position = 0L; try { httpContext.Request.EnableRewind(); using (var buffer = new MemoryStream()) { await originalRequestBody.CopyToAsync(buffer); originalRequestBody.Position = 0L; var bodyCompressed = httpContext.RequestBodyIsCompressed(out string compressionType); internalTrafficCometAccessor.RequestBody = dynamicBodyReader .ReadBody(buffer, bodyCompressed, compressionType); } } catch (Exception ex) { if (Logger != null && Logger.IsEnabled(LogLevel.Error)) { Logger.LogError(new EventId(90, $"TrafficComet.{nameof(RequestReadMiddleware)}"), ex, ex.ToString()); } } finally { httpContext.Request.Body = originalRequestBody; } await Next(httpContext); } else { await Next(httpContext); } }
public ResponseLogFactory(IHttpContextAccessor httpContextAccessor, IOptions <ResponseLogFactoryConfig> config, ITrafficCometMiddlewaresAccessor trafficCometAccessor) { HttpContextAccessor = httpContextAccessor ?? throw new ArgumentNullException(nameof(httpContextAccessor)); TrafficCometAccessor = trafficCometAccessor ?? throw new ArgumentNullException(nameof(trafficCometAccessor)); Config = config; }
public ClientLogFactory(IHttpContextAccessor httpContextAccessor, ITrafficCometMiddlewaresAccessor trafficCometAccessor, IIpAddressReader addressIpReader) { HttpContextAccessor = httpContextAccessor ?? throw new ArgumentNullException(nameof(httpContextAccessor)); TrafficCometAccessor = trafficCometAccessor ?? throw new ArgumentNullException(nameof(trafficCometAccessor)); AddressIpReader = addressIpReader ?? throw new ArgumentNullException(nameof(addressIpReader)); }
public HttpMessageLogWriter(ILogger <TMessageLogWriter> logger, ITrafficCometMiddlewaresAccessor trafficCometMiddlewaresAccessor, IWebEventBodyDocumentWriter webEventBodyDocumentWriter, IHttpContentReader httpContentReader) { Logger = logger ?? throw new ArgumentNullException(nameof(logger)); TrafficCometMiddlewaresAccessor = trafficCometMiddlewaresAccessor ?? throw new ArgumentNullException(nameof(trafficCometMiddlewaresAccessor)); WebEventBodyDocumentWriter = webEventBodyDocumentWriter ?? throw new ArgumentNullException(nameof(webEventBodyDocumentWriter)); HttpContentReader = httpContentReader ?? throw new ArgumentNullException(nameof(httpContentReader)); }
public TrafficLogFactory(IRequestLogFactory requestLogFactory, IResponseLogFactory responseLogFactory, IDatesTrafficFactory datesTrafficFactory, IClientLogFactory clientLogFactory, IServerLogFactory serverLogFactory, ITrafficCometMiddlewaresAccessor trafficCometAccessor) { RequestLogFactory = requestLogFactory ?? throw new ArgumentNullException(nameof(requestLogFactory)); ResponseLogFactory = responseLogFactory ?? throw new ArgumentNullException(nameof(responseLogFactory)); DatesTrafficFactory = datesTrafficFactory ?? throw new ArgumentNullException(nameof(datesTrafficFactory)); ClientLogFactory = clientLogFactory ?? throw new ArgumentNullException(nameof(clientLogFactory)); ServerLogFactory = serverLogFactory ?? throw new ArgumentNullException(nameof(serverLogFactory)); TrafficCometMiddlewaresAccessor = trafficCometAccessor ?? throw new ArgumentNullException(nameof(trafficCometAccessor)); }
internal static RequestLogFactory CreateRequestLogFactory(IHttpContextAccessor httpContextAccessor = null, RequestLogFactoryConfig requestLogFactoryConfig = null, ITrafficCometMiddlewaresAccessor trafficCometMiddlewaresAccessor = null) { if (httpContextAccessor == null) { httpContextAccessor = CreateHttpContextAccessor(); } var options = CreateOptionsForRequestLogFactory(requestLogFactoryConfig); if (trafficCometMiddlewaresAccessor == null) { trafficCometMiddlewaresAccessor = ITrafficCometMiddlewaresAccessorMockFactory.CreateObjectMock( requestCustomParams: MockStaticData.RequestCustomParams, responseCustomParams: MockStaticData.ResponseCustomParams); } var requestLogFactory = new RequestLogFactory(httpContextAccessor, options, trafficCometMiddlewaresAccessor); return(requestLogFactory); }
public DatesTrafficFactory(ITrafficCometMiddlewaresAccessor trafficCometMiddlewaresAccessor) { TrafficCometMiddlewaresAccessor = trafficCometMiddlewaresAccessor ?? throw new ArgumentNullException(nameof(trafficCometMiddlewaresAccessor)); }
public async Task Invoke(HttpContext httpContext, ITrafficCometMiddlewaresAccessor trafficCometAccessor, ITrafficLogWriter logWriter, ITrafficLogFactory logFactory, ITraceIdGenerator traceIdGenerator, IClientIdGenerator clientUniqueIdGenerator, IOptionsSnapshot <TrafficCometMiddlewareConfig> config) { if (trafficCometAccessor == null) { throw new ArgumentNullException(nameof(trafficCometAccessor)); } if (logWriter == null) { throw new ArgumentNullException(nameof(logWriter)); } if (logFactory == null) { throw new ArgumentNullException(nameof(logFactory)); } if (traceIdGenerator == null) { throw new ArgumentNullException(nameof(traceIdGenerator)); } if (clientUniqueIdGenerator == null) { throw new ArgumentNullException(nameof(clientUniqueIdGenerator)); } TrafficCometMiddlewaresAccessor internalTrafficCometAccessor = (TrafficCometMiddlewaresAccessor)trafficCometAccessor; internalTrafficCometAccessor.InitContextValues(); internalTrafficCometAccessor.ApplicationId = config.Value.ApplicationId; internalTrafficCometAccessor.IgnoreWholeRequest = config.IgnoreRequest(httpContext.Request.Path); var clientIdReaded = clientUniqueIdGenerator.TryGenerateClientId(out string clientId); var traceIdReaded = traceIdGenerator.TryGenerateTraceId(out string traceId); if (!internalTrafficCometAccessor.IgnoreWholeRequest && clientIdReaded && traceIdReaded) { BeforeExecuteNextMiddleware(ref internalTrafficCometAccessor, clientId, traceId); await Next(httpContext); try { AfterExecutedNextMiddleware(ref internalTrafficCometAccessor); var ignoreRequest = internalTrafficCometAccessor.IgnoreRequest; var ignoreResponse = internalTrafficCometAccessor.IgnoreResponse; var log = logFactory.Create(); if (log != null) { _ = logWriter.SaveLog(log); } } catch (Exception ex) { if (Logger != null && Logger.IsEnabled(LogLevel.Error)) { Logger.LogError(new EventId(92, $"TrafficComet.{nameof(TrafficCometMiddleware)}"), ex, ex.ToString()); } } } else { await Next(httpContext); } }