protected void Application_BeginRequest(object sender, EventArgs e) { HttpResponse response = HttpContext.Current.Response; OutputFilterStream filter = new OutputFilterStream(response.Filter); response.Filter = filter; HttpContext.Current.Items.Add("logFilter", filter); switch (TraceUtil.TraceIsEnabled()) { case TraceUtil.TraceMode.ON: NLog.LogManager.GetCurrentClassLogger().Trace(String.Format("REQUEST[{0}]({1}) - [{2}] {3}", filter.GuidRequest, HttpContext.Current.Request.UserHostAddress, HttpContext.Current.Request.HttpMethod, HttpContext.Current.Request.Url)); break; case TraceUtil.TraceMode.DATA: string content = RequestBody(); if (!string.IsNullOrWhiteSpace(content)) { NLog.LogManager.GetCurrentClassLogger().Trace(String.Format("REQUEST[{0}]({1}) - [{2}] {3}", filter.GuidRequest, HttpContext.Current.Request.UserHostAddress, HttpContext.Current.Request.HttpMethod, content)); } break; } }
protected void Application_EndRequest(object sender, EventArgs e) { HttpResponse response = HttpContext.Current.Response; OutputFilterStream filter = (OutputFilterStream)HttpContext.Current.Items["logFilter"]; switch (TraceUtil.TraceIsEnabled()) { case TraceUtil.TraceMode.ON: NLog.LogManager.GetCurrentClassLogger().Trace(String.Format("RESPONSE.{0}[{1}] - [{2}] {3}", response.StatusCode.ToString(), filter.GuidRequest, ((HttpApplication)sender).Request.HttpMethod, ((HttpApplication)sender).Request.Url)); break; case TraceUtil.TraceMode.DATA: if (filter.CopyStreamLength > Int64.Parse(ConfigurationManager.AppSettings["traceResponseMaxSize"])) { NLog.LogManager.GetCurrentClassLogger().Trace(String.Format("RESPONSE.{0}[{1}] - Big response skipped from trace.", response.StatusCode.ToString(), filter?.GuidRequest ?? "N.A.")); } else if (response.ContentType.Contains("application/json")) { dynamic dynBodyText = JsonConvert.DeserializeObject(filter.ReadStream()); NLog.LogManager.GetCurrentClassLogger().Trace(String.Format("RESPONSE.{0}[{1}] - {2}", response.StatusCode.ToString(), filter?.GuidRequest ?? "N.A.", ((JToken)dynBodyText).ToStringLog())); } break; } }
private void ContextOnBeginRequest(object sender, EventArgs eventArgs) { string requestBody; using (var steamReader = new StreamReader(_context.Request.InputStream)) { requestBody = steamReader.ReadToEnd(); } var logObject = new LogRequestResponse { Body = requestBody, Headers = _context.Request.Headers .AllKeys.Aggregate(string.Empty, (current, key) => current + $"{key}: {_context.Request.Headers[key]},\n"), HttpMethod = _context.Request.HttpMethod }; Debug.WriteLine(logObject.ToString()); HttpResponse response = HttpContext.Current.Response; OutputFilterStream filter = new OutputFilterStream(response.Filter); response.Filter = filter; }
internal void Application_BeginRequest(object sender, EventArgs e) { HttpResponse response = HttpContext.Current.Response; OutputFilterStream filter = new OutputFilterStream(response.Filter); HttpContext.Current.Items["Filter"] = filter; response.Filter = filter; }
/// <summary> /// Initializes the request by setting a response filter. /// </summary> /// <param name="sender">Application.</param> /// <param name="e">Event.</param> private void BeginRequest(object sender, EventArgs e) { var application = (HttpApplication)sender; savedRequest = null; if (ShouldCaptureRequestBody(application.Request)) { savedRequest = new StreamReader(application.Request.InputStream).ReadToEnd(); application.Request.InputStream.Seek(0, SeekOrigin.Begin); } if (ShouldCaptureResponseBody(application.Request)) { var response = application.Response; var filter = new OutputFilterStream(response.Filter); response.Filter = filter; application.Request.RequestContext.HttpContext.Items[FILTER_KEY] = filter; } }