为什么应用程序洞察将 400 个错误请求记录为成功请求而不记录异常

约翰

我遇到了一个我不熟悉的问题。

因此,我正在尝试记录来自测试 Azure 函数的异常,但是当我抛出异常并返回 400 错误请求时,应用程序洞察将日志注册为成功请求。

据我了解,它可能是注册函数的成功运行,但我不明白的是我应该如何记录异常。

所以到目前为止我所做的就是这个。

(从现在开始,我将把 Application Insights 称为 AI)

我首先创建了一个 AI 资源。

然后我拿起仪器键并将其应用于我的功能的应用程序设置。

之后,我将 AI NUGET 安装到我的函数 bu 创建 Projet.json 文件,然后粘贴类似这样的东西,它安装了必要的程序集等。

{
  "frameworks": {
  "net46":{
  "dependencies": {
    "Microsoft.ApplicationInsights": "2.4.0"
      }
    }
  }
}

在此之后,我在函数中初始化 TelemetryClient 并尝试在捕获中记录和异常:

引发:

    string key = TelemetryConfiguration.Active.InstrumentationKey = System.Environment.GetEnvironmentVariable("APPINSIGHTS_INSTRUMENTATIONKEY", EnvironmentVariableTarget.Process);
    TelemetryClient telemetry = new TelemetryClient() { 
    InstrumentationKey = key 
    }; 

抓住:

catch (Exception e)
{
    Dictionary<string,string> properties = new Dictionary<string,string>();

    properties.Add("Function Payload", data.ToString());
    properties.Add("Function Exception", e.ToString());

    telemetry.TrackException(e, properties);

    return req.CreateResponse(HttpStatusCode.BadRequest, e);
}

测试运行我得到的功能:

2018-03-07T14:24:36.171 [Info] Function started (Id=0292b455-314d-4c4c-872a-2b8137a72305)
2018-03-07T14:24:37.092 [Info] Function completed (Success, Id=0292b455-314d-4c4c-872a-2b8137a72305, Duration=931ms)

测试功能结果窗口

在应用程序洞察中,我只能看到 StatusCode 的错误请求:500 但 400 个错误请求被记录为成功请求。

而且 TrackException 功能不记录任何自定义属性......

在此处输入图片说明

那么我错过了什么?

有关异常记录的更多详细信息:

在此处输入图片说明 在此处输入图片说明

布雷特萨姆

@Mikhail 是对的,我们将其视为成功,因为该功能是成功的。我们不想使用状态码来猜测是否有成功的操作,所以我们寻找函数是否抛出异常。

Your exception isn't appearing in that screen because it hasn't been property correlated with this function execution. If you go to App Insights Analytics and query for that ExceptionTelemetry, you should see it.

In order to correlate it with a specific function, you'd need to set the OperationId, which is the same as the function's InvocationId. There is a sample that shows how to do this with Events, Metrics, and Dependencies, but doing it for Exceptions is the same (you can ignore the User.Id assignment): https://docs.microsoft.com/en-us/azure/azure-functions/functions-monitoring#custom-telemetry-in-c-functions


Update: From what you've shown of your function above, you may be able to get away with doing something like:

catch (Exception e)
{    
    log.Error("Function Payload " + data.ToString());
    throw;
}

这将返回 500(而不是 400),Functions 会将跟踪记录到 Application Insights,然后记录异常以及请求失败。如果您没有TelemetryClient在其他任何地方使用您的代码,则可以将其从代码中删除。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我收到400错误的请求错误?将Django Rest框架用作后端,将React作为我的Web应用程序的前端

来自分类Dev

当我尝试将PHP应用程序部署到Google App Engine时,为什么突然出现400错误?

来自分类Dev

请求失败,HTTP 状态为 400:从 Windows 应用程序调用 Web 服务时请求错误

来自分类Dev

400错误的其余应用程序/ XML请求

来自分类Dev

为什么在AngularJs帖子中收到400个错误的请求?

来自分类Dev

无法将事件记录到应用程序洞察中

来自分类Dev

从 Java 应用程序到 TFS REST API 的 HTTP PATCH 请求获得 400(错误请求)错误

来自分类Dev

Bot Framework C# Luis Getting > 异常:响应状态代码不表示成功:400(错误请求)

来自分类Dev

在不停止应用程序的情况下拦截400错误请求

来自分类Dev

(400) 通过 ARM 部署功能应用程序时出现错误请求

来自分类Dev

在nginx反向代理后面对应用程序进行故障排除,因为POST / PUT请求被回答为错误400(错误请求)

来自分类Dev

错误400:无法将PHP 5.4应用程序部署到Google App Engine

来自分类Dev

为什么我用HttpWebReponse收到一个错误的请求(代码400)?

来自分类Dev

错误的请求错误 400

来自分类Dev

python请求400错误

来自分类Dev

$ .ajax 400错误请求

来自分类Dev

Angularjs错误请求(400)

来自分类Dev

HTTP请求:400错误

来自分类Dev

Ajax 400 错误请求

来自分类Dev

应用程序洞察记录查看的列表项?

来自分类Dev

Python:检查Facebook用户是否已授予对我的应用程序的访问权限。失败,出现“ HTTP错误400:错误的请求”

来自分类Dev

从应用程序洞察请求数据返回 null

来自分类Dev

API修补程序方法返回了错误的请求400

来自分类Dev

Bamboo 能否将 HTTP 400 错误请求解释为失败

来自分类Dev

为什么此Python POST请求返回400错误的请求代码?

来自分类Dev

400错误的请求将JSON POST发送到REST

来自分类Dev

将JSON发布到Controller返回400错误请求

来自分类Dev

从反应客户端应用程序到 spring-boot 服务器的 HTTP POST 请求返回 400 错误

来自分类Dev

为什么我收到400错误的要求?

Related 相关文章

  1. 1

    为什么我收到400错误的请求错误?将Django Rest框架用作后端,将React作为我的Web应用程序的前端

  2. 2

    当我尝试将PHP应用程序部署到Google App Engine时,为什么突然出现400错误?

  3. 3

    请求失败,HTTP 状态为 400:从 Windows 应用程序调用 Web 服务时请求错误

  4. 4

    400错误的其余应用程序/ XML请求

  5. 5

    为什么在AngularJs帖子中收到400个错误的请求?

  6. 6

    无法将事件记录到应用程序洞察中

  7. 7

    从 Java 应用程序到 TFS REST API 的 HTTP PATCH 请求获得 400(错误请求)错误

  8. 8

    Bot Framework C# Luis Getting > 异常:响应状态代码不表示成功:400(错误请求)

  9. 9

    在不停止应用程序的情况下拦截400错误请求

  10. 10

    (400) 通过 ARM 部署功能应用程序时出现错误请求

  11. 11

    在nginx反向代理后面对应用程序进行故障排除,因为POST / PUT请求被回答为错误400(错误请求)

  12. 12

    错误400:无法将PHP 5.4应用程序部署到Google App Engine

  13. 13

    为什么我用HttpWebReponse收到一个错误的请求(代码400)?

  14. 14

    错误的请求错误 400

  15. 15

    python请求400错误

  16. 16

    $ .ajax 400错误请求

  17. 17

    Angularjs错误请求(400)

  18. 18

    HTTP请求:400错误

  19. 19

    Ajax 400 错误请求

  20. 20

    应用程序洞察记录查看的列表项?

  21. 21

    Python:检查Facebook用户是否已授予对我的应用程序的访问权限。失败,出现“ HTTP错误400:错误的请求”

  22. 22

    从应用程序洞察请求数据返回 null

  23. 23

    API修补程序方法返回了错误的请求400

  24. 24

    Bamboo 能否将 HTTP 400 错误请求解释为失败

  25. 25

    为什么此Python POST请求返回400错误的请求代码?

  26. 26

    400错误的请求将JSON POST发送到REST

  27. 27

    将JSON发布到Controller返回400错误请求

  28. 28

    从反应客户端应用程序到 spring-boot 服务器的 HTTP POST 请求返回 400 错误

  29. 29

    为什么我收到400错误的要求?

热门标签

归档