【问题标题】:Application Insights with error handling middleware带有错误处理中间件的 Application Insights
【发布时间】:2019-09-07 13:22:03
【问题描述】:

我有一些错误处理中间件可以吞下任何异常..

 public class ErrorHandlingMiddleware
    {
        private readonly RequestDelegate next;

        public ErrorHandlingMiddleware(RequestDelegate next)
        {
            this.next = next;
        }

        public async Task Invoke(HttpContext context /* other dependencies */)
        {
            try
            {
                await next(context);
            }
            catch (Exception ex)
            {
                await HandleExceptionAsync(context, ex);
            }
        }


private static Task HandleExceptionAsync(HttpContext context, Exception exception)
        {
            var code = HttpStatusCode.InternalServerError;
            string error = "";
            string logerror = JsonConvert.SerializeObject(new { error = exception });

#if DEBUG
            error = logerror;
            Log.Error(error);
#else
            Log.Error(logerror);
            error = "An unexpected error occurred";
#endif
            context.Response.ContentType = "application/json";
            context.Response.StatusCode = (int)code;
            return context.Response.WriteAsync(error);

        }

我刚开始使用 Application Insights,虽然我可以看到失败部分发生了错误,但我看不到堆栈跟踪,我怀疑这是因为中间件正在处理它。我能做点什么吗在应用程序洞察中显示所有与异常相关的内容?

【问题讨论】:

  • 如果您使用 ILogger netcore 接口进行日志记录,请确保使用带有异常对象的重载,例如docs.microsoft.com/en-us/dotnet/api/…。将日志发送到 AI 的库依赖于异常对象来创建“异常遥测”。可能不是造成这种情况的原因,但通常是一种很好的做法。

标签: c# asp.net-core azure-application-insights


【解决方案1】:

有两种选择:

  1. 在您的处理函数中添加TrackException
  2. 同时记录堆栈跟踪并添加一个上传日志的适配器(默认情况下最多警告)

【讨论】:

    【解决方案2】:

    当使用Log.ErrorILogger 发送异常时,有两个主要选项:

    1. 发送字符串
    2. 发送Exception 对象和字符串

    Application Insights 中的The results 非常不同。您正在使用的第一个是创建一个TraceTelemetry 对象。第二个创建一个ExceptionTelemetry 对象,该对象旨在保存异常信息,包括堆栈跟踪。

    【讨论】:

      猜你喜欢
      • 2015-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-07
      • 2020-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多