angular - 将异常跟踪从角度添加到应用洞察力
问题描述
我正在尝试编写从 Angular 到 azure app 洞察力的异常。如果我执行 JSON.stringify(error),则会记录异常。但是我不想对错误进行字符串化,而是我们可以在不进行字符串化的情况下保存错误吗?
工作代码:
let exception: IExceptionTelemetry = {
exception: new Error(JSON.stringify(error)),
};
this.appInsights.trackException(exception);
我在下面尝试了没有 stringify 的编码,但它不起作用,即在 azure appInsight 中没有记录错误:
let exception: IExceptionTelemetry = {
exception: error
};
this.appInsights.trackException(exception);
OR
let exception: IExceptionTelemetry = {
exception: {
name: error.name,
message: error.message,
stack: error.stack
}
};
this.appInsights.trackException(exception);
我正在使用@microsoft/applicationinsights-web ~2.4.4
解决方案
不适用于 App Insights,但观察您的示例,我认为您应该尝试在“异常”中再添加一个嵌套级别,如下所示:
const {message, name, stack} = error;
let exception: IExceptionTelemetry = {
exception: {
message: {message, name, stack},
...
},
};
还想在这里强调两件事:
- 如果
error
是类的实际实例Error
(不是自定义对象),则比JSON.stringify(error) === "{}"
,因为“消息”和“堆栈”不是“错误”中的可枚举字段...所以当您处理错误字段时,您必须访问它们含蓄地。 - 在这种情况下,App Insight 将接收一个对象而不是字符串化对象。这是对的吗?
更新 我在文档中找到了这个:
appInsights.trackException({exception: new Error('some error')});
所以也许这会起作用:
const {message, name, stack} = error;
let exception: IExceptionTelemetry = {
exception: new Error(message),
};
推荐阅读
- c# - 有没有办法使用 IoC 容器将依赖项注入到帮助程序类?
- javascript - 为什么这个导出的 typescript const 不能从转译和捆绑的代码中导入?
- css - 在 Angular 7 中创建滚动导航
- javascript - MySQL 事务与垃圾邮件
- node.js - nodejs中如何使用sinon进行中间件测试?
- python - AWS S3 同步方法 - 可以完全忽略修改过的文件吗?
- floating-point - 如何在系统verilog中获取实数/短实数的符号、尾数和指数
- powershell - 按行号分段读取文件
- swift - 如何在 UITabelViewCell 类中访问正确的单元格宽度?
- c# - 在发布时设置/获取 DeliveryTag RabbitMQ