示例#1
0
        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");
        }
示例#2
0
        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();
            }
        }
示例#3
0
        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);
            }
        }
示例#4
0
        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();
            }
        }
示例#5
0
        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");
        }
示例#7
0
        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();
                }
            };
        }