【问题标题】:Application Insights not reporting custom properties and call stackApplication Insights 不报告自定义属性和调用堆栈
【发布时间】:2016-03-18 06:46:23
【问题描述】:

我正在使用以下方法记录不同的异常,该方法接受异常以及一些上下文信息字符串。

public void LogException(string notes, Exception e)
{
    var properties = new Dictionary<string, string>()
    {
        { "notes", notes }
    };

    telemetry.TrackException(e, properties);
}

异常被正确报告,但它们丢失了

  • 自定义属性“notes”
  • 调用堆栈

【问题讨论】:

  • 只是为了排除显而易见的问题,你确定你的 LogException 方法被调用了吗?应用程序洞察会自动记录异常,因此您可以看到默认日志记录。至于调用堆栈,因为 UWP 应用程序编译为 .net 本机,所以您无法获得有意义的调用堆栈(如果有人知道不同,请分享,因为这非常令人沮丧)

标签: c# uwp azure-application-insights


【解决方案1】:

异常实际上是 throw 吗?你抓住那个例外了吗?如果你只是这样做

client.TrackException( new Exception() );

在某些操作系统/运行时不会有堆栈帧。

如果你这样做了

try
{
   throw new Exception();
}
catch (Exception e)
{
    client.TrackException( e );
}

获得堆栈跟踪。抛出异常的行为实际上填充了 sdk 使用的底层框架。

对于您的自定义属性,它应该会立即显示,尽管有时在第一次发送新的自定义属性与它作为要显示的字段显示在元数据中时存在延迟。此外,您只能使用 200 个不同的命名自定义属性,因此如果您已经发送了 200 个其他属性,“注释”字段将被丢弃。

一般来说,对于 UWP / release / .net native,你应该仍然有帧,它们只是不太可读,它们将是内存地址,但仍然有一堆它们,如果你有 pdb 等,你可以对它的位置进行逆向工程。

虽然上面看起来像“灾难性失败”异常,可能没有可用的堆栈帧?

【讨论】:

    猜你喜欢
    • 2016-12-09
    • 2016-03-16
    • 1970-01-01
    • 2016-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多