在 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 中查看日志?
在 Service Fabric 群集上安装 Application Insights 时出错