今天,我将Azure功能与应用程序见解集成在一起,以进行应用程序日志记录,尤其是捕获错误堆栈跟踪。
首先,我编写了没有try-catch块的Azure函数,因此它在“监视器”部分和应用程序洞察中也显示了正确的状态/信息。
稍后,我添加了try-catch块并记录了更多数据,例如
catch(Exception ex)
{
log.Error(inputData);
log.Error(ex.Message);
return req.CreateResponse(HttpStatusCode.InternalServerError);
}
您可以在下面的附件中看到ResultCode为500,绿色状态...为什么? 我认为由于这个问题,Application Insight无法在“错误/失败的请求查询”中显示此数据。
在Application Insight中找不到记录
exceptions
|where operation_Id == "c5b5a345-fa11-4356-b769-b34d1c6619e5"
| order by timestamp desc
| project operation_Id , timestamp
答案 0 :(得分:1)
成功检查表示您的Azure函数调用是成功(=未引发异常)还是失败(=引发异常)。
第一次调用时发生异常,因此函数调用未正常终止,因此出现红色选中标记。
当您手动捕获并返回500时,就函数调用而言还是可以的-它完成并返回结果。
函数运行时不遵循HTTP语义,规则对于所有触发器类型都是通用的。
Application Insight默认指标不会在失败的请求图中显示已处理的异常,开发人员需要针对已处理的异常进行构建查询,例如
requests
| where success == "False" and timestamp >= ago(7d)
| join kind= inner traces on operation_Id
| project operation_Id , timestamp, message, severityLevel
| order by timestamp, operation_Id
severityLevel :- 1 = Info and 3 = Error