在 Application Insights 中记录 json 序列化错误

Posted

技术标签:

【中文标题】在 Application Insights 中记录 json 序列化错误【英文标题】:Log json serialization errors in Application Insights 【发布时间】:2022-01-18 16:09:14 【问题描述】:

我使用 openapi extension 运行 Azure 函数。

为了在 openapi 定义中获取正确的可为空值,我使用了 DTO 的 DisallowNull 属性。

    public record MyObject(
        [property: JsonProperty(Required = Required.DisallowNull)]
        string ContinuationToken);

我有一个错误,即一个属性有 DisallowNull,但在某些情况下可能为 null。

在了解我重现的错误后,我在本地收到了一条有用的消息:

[2021-12-15T12:41:06.365Z] Newtonsoft.Json: Cannot write a null value for property 'continuationToken'. Property requires a non-null value. Path ''.

这样,错误很快得到修复,但是当我查看 Application Insights 日志时,我看不到任何错误。请求中只有 Response code 500 表示错误。

是否有可能在应用程序洞察日志中获取 Azure Functions 的序列化错误?

【问题讨论】:

【参考方案1】:

Azure Functions 提供与 Azure Application Insights 的内置集成监控功能Application Insights 可以收集日志、性能和错误数据。通过检测性能异常和使用分析工具,我们可以轻松诊断问题并更好地了解问题。

启用 Application Insights 集成后,遥测数据将发送到您连接的 Application Insights 实例。此数据包括 Functions 主机生成的日志、从您的函数代码写入的跟踪以及性能数据。以下是一些带有描述的日志类型示例。

Log Level Code Description
Warning 3 Logs that highlight an abnormal or unexpected event in the application flow, but don't stop execution.
Error 4 Logs that highlight when the current flow of execution is stopped because of a failure.
Critical 5 Logs that describe an unrecoverable application or system crash, or a catastrophic failure that requires immediate attention.

host.json file 配置确定函数应用发送到 Application Insights 的日志记录量。如需更多信息,请阅读此host.json reference for Azure Functions 2.xMicrosoft 文档。

我建议阅读此Monitor Azure Functions 文档以获取更多信息。还可以使用 Application Insights 检查此How to configure monitoring for Azure Functions。

【讨论】:

感谢您的回答。我已经设置了应用程序洞察力,并且出现了大多数消息和错误。但是 Newtonsoft.Json 序列化错误在那里找不到。所以我需要更多的细节我是如何得到它的。

以上是关于在 Application Insights 中记录 json 序列化错误的主要内容,如果未能解决你的问题,请参考以下文章

API Application Insights 使用的良好实践

如何在 Application Insights 中查看日志?

处于调试模式时的 Application Insights

在 Service Fabric 群集上安装 Application Insights 时出错

在 Application Insights 中记录 json 序列化错误

使用Application Insights监控应用程序性能