private void LogException(HttpContext httpContext, Exception exception) { try { var tracer = TraceServices.GetRequestTracer(httpContext); Console.WriteLine(@"Exception Message : " + exception.Message); Console.WriteLine(@"Exception StackTrace : " + exception.StackTrace); tracer.TraceError(exception); } catch (Exception ex) { Debug.WriteLine(ex.Message); } //return httpContext.Response.WriteAsync("Test Exception"); }
private static void OnEndRequest(object sender, EventArgs e) { var httpContext = ((HttpApplication)sender).Context; var tracer = TraceServices.GetRequestTracer(httpContext); LogEndRequest(httpContext); if (tracer == null || tracer.TraceLevel <= TraceLevel.Off) { return; } var attribs = new Dictionary <string, string> { { "type", "response" }, { "statusCode", httpContext.Response.StatusCode.ToString() }, { "statusText", httpContext.Response.StatusDescription } }; if (httpContext.Response.StatusCode >= 400) { attribs[TraceExtensions.TraceLevelKey] = ((int)TraceLevel.Error).ToString(); } else { AddTraceLevel(httpContext, attribs); } // Response.Headers is not supported in Classic mode, so just skip this if (HttpRuntime.UsingIntegratedPipeline) { foreach (string key in httpContext.Response.Headers) { attribs[key] = httpContext.Response.Headers[key]; } } tracer.Trace(XmlTracer.OutgoingResponseTrace, attribs); var requestStep = (IDisposable)httpContext.Items[_stepKey]; if (requestStep != null) { requestStep.Dispose(); } }
private static void OnError(object sender, EventArgs e) { try { HttpApplication app = (HttpApplication)sender; var httpContext = app.Context; var tracer = TraceServices.GetRequestTracer(httpContext); if (tracer == null || tracer.TraceLevel <= TraceLevel.Off) { return; } tracer.TraceError(app.Server.GetLastError()); } catch (Exception ex) { Debug.WriteLine(ex.Message); } }
private static void OnEndRequest(object sender, EventArgs e) { var httpContext = ((HttpApplication)sender).Context; var tracer = TraceServices.GetRequestTracer(httpContext); if (tracer == null || tracer.TraceLevel <= TraceLevel.Off) { return; } var attribs = new Dictionary <string, string> { { "type", "response" }, { "statusCode", httpContext.Response.StatusCode.ToString() }, { "statusText", httpContext.Response.StatusDescription } }; if (httpContext.Response.StatusCode >= 400) { attribs[TraceExtensions.TraceLevelKey] = ((int)TraceLevel.Error).ToString(); } else { AddTraceLevel(httpContext, attribs); } foreach (string key in httpContext.Response.Headers) { attribs[key] = httpContext.Response.Headers[key]; } tracer.Trace("Outgoing response", attribs); var requestStep = (IDisposable)httpContext.Items[_stepKey]; if (requestStep != null) { requestStep.Dispose(); } }
private static void EndRequest(HttpContext httpContext) { var tracer = TraceServices.GetRequestTracer(httpContext); LogEndRequest(httpContext); if (tracer == null || tracer.TraceLevel <= TraceLevel.Off) { return; } var attribs = new Dictionary <string, string> { { "type", "response" }, { "statusCode", httpContext.Response.StatusCode.ToString() }, { "statusText", GetStatusDescription(httpContext.Response.StatusCode) } }; if (httpContext.Response.StatusCode >= 400) { attribs[TraceExtensions.TraceLevelKey] = ((int)TraceLevel.Error).ToString(); } else { AddTraceLevel(httpContext, attribs); } tracer.Trace(XmlTracer.OutgoingResponseTrace, attribs); var requestStep = (IDisposable)httpContext.Items[_stepKey]; if (requestStep != null) { requestStep.Dispose(); } }
private async Task LogException(HttpContext httpContext, Exception exception) { try { var tracer = TraceServices.GetRequestTracer(httpContext); var error = exception; //LogErrorRequest(httpContext, error); // _logger.LogCritical(exception.Message, exception); // _logger.LogCritical(exception.Message, exception); if (tracer != null || tracer.TraceLevel > TraceLevel.Off) { Console.WriteLine(exception.Message); Console.WriteLine(exception.InnerException.StackTrace); tracer.TraceError(error); } } catch (Exception ex) { Debug.WriteLine(ex.Message); } //return httpContext.Response.WriteAsync("Test Exception"); }
public void Init(HttpApplication app) { app.BeginRequest += (sender, e) => { var httpContext = ((HttpApplication)sender).Context; // Skip certain paths if (httpContext.Request.RawUrl.EndsWith("favicon.ico", StringComparison.OrdinalIgnoreCase) || httpContext.Request.Path.StartsWith("/dump", StringComparison.OrdinalIgnoreCase) || httpContext.Request.RawUrl == "/") { return; } // Setup the request for the tracer var tracer = TraceServices.CreateRequesTracer(httpContext); var attribs = new Dictionary <string, string> { { "url", httpContext.Request.RawUrl }, { "method", httpContext.Request.HttpMethod }, { "type", "request" } }; foreach (string key in httpContext.Request.Headers) { attribs["h_" + key] = httpContext.Request.Headers[key]; } if (httpContext.Request.RawUrl.Contains(".git") || httpContext.Request.RawUrl.EndsWith("/deploy", StringComparison.OrdinalIgnoreCase)) { // Mark git requests specially attribs.Add("git", "true"); } httpContext.Items[_stepKey] = tracer.Step("Incoming Request", attribs); }; app.Error += (sender, e) => { try { var httpContext = ((HttpApplication)sender).Context; var tracer = TraceServices.GetRequestTracer(httpContext); if (tracer == null) { return; } tracer.TraceError(app.Server.GetLastError()); } catch (Exception ex) { Debug.WriteLine(ex.Message); } }; app.EndRequest += (sender, e) => { var httpContext = ((HttpApplication)sender).Context; var tracer = TraceServices.GetRequestTracer(httpContext); if (tracer == null) { return; } var attribs = new Dictionary <string, string> { { "type", "response" }, { "statusCode", httpContext.Response.StatusCode.ToString() }, { "statusText", httpContext.Response.StatusDescription } }; foreach (string key in httpContext.Response.Headers) { attribs["h_" + key] = httpContext.Response.Headers[key]; } tracer.Trace("Outgoing response", attribs); var requestStep = (IDisposable)httpContext.Items[_stepKey]; if (requestStep != null) { requestStep.Dispose(); } }; }