崩溃分析 API

本文档介绍移动监控 Unity SDK 提供的崩溃分析 API,包括自定义日志、自定义异常

1. 自定义日志

自定义日志会跟随异常信息一起上报。

接口定义

namespace Alicloud.Apm.CrashAnalysis
{
  public static class CrashAnalysis
  {
    public static void Log(string message) {}
  }
}

自定义日志参数说明

参数

类型

是否必填

长度范围

说明

message

string

1~64000

自定义日志消息

代码示例

using Alicloud.Apm.CrashAnalysis;

// 以下是代码示例
CrashAnalysis.Log("Your custom message");

2. 自定义异常对象

接口定义

namespace Alicloud.Apm.CrashAnalysis
{
  public static class CrashAnalysis
  {
    public static void RecordException(Exception exception) {}
  }
}

自定义异常参数说明

参数

类型

是否必填

说明

exception

System.Exception

自定义 C# 异常

代码示例

using Alicloud.Apm.CrashAnalysis;

// 以下是代码示例
CrashAnalysis.RecordException(new InvalidOperationException("Your exception message")); 

3. 自定义异常模型

接口定义

namespace Alicloud.Apm.CrashAnalysis
{
  public static class CrashAnalysis
  {
    public static void RecordExceptionModel(ExceptionModel exceptionModel) {}
  }
  
  public enum SourceLanguage
  {
    Unknown = 0,
    CSharp,
    Lua
  }
}

ExceptionModel参数说明

参数

类型

是否必填

说明

Name

string

异常名称

Reason

string

异常原因

Language

enum

异常来源的语言

StackTrace

IList<StackFrame>

堆栈列表:从顶部开始倒序

StackFrame参数说明

参数

类型

是否必填

说明

Symbol

string

符号,一般是函数/方法名

File

string

文件名

Line

int

行号

Library

string

代码示例

using Alicloud.Apm.CrashAnalysis;

// 以下是代码示例
var model = new ExceptionModel("LuaRuntimeError", "attempt to index a nil value", SourceLanguage.Lua);
model.StackTrace.Add(StackFrame.FromSymbol("main", "script.lua", 15, "lua"));
model.StackTrace.Add(StackFrame.FromSymbol("doSomething", "utils.lua", 8, "lua"));

CrashAnalysis.RecordExceptionModel(model);

4. 设置异常上报的 Unity 日志级别

  • 获取或设置异常上报的 Unity 最低日志级别

接口定义

namespace Alicloud.Apm.CrashAnalysis
{
  public static class CrashAnalysisConfiguration
  {
    public static LogType ReportLogLevel {}
  }
}

参数说明

参数

类型

是否必填

说明

ReportLogLevel

enum

UnityEngine.LogType

Unity 日志级别,SDK通过注册UnityEngine.Application.logMessageReceivedThreaded回调采集应用异常,默认日志级别是Exception,日志级别从小到大排序如下:

  • Log

  • Warning

  • Assert

  • Error

  • Exception

代码示例

using Alicloud.Apm.CrashAnalysis;

// 以下是代码示例
// 设置异常上报的 Unity 日志级别
CrashAnalysisConfiguration.ReportLogLevel = UnityEngine.LogType.Exception;
// 获取异常上报的 Unity 日志级别
UnityEngine.LogType reportLogLevel = CrashAnalysisConfiguration.ReportLogLevel;

5. 设置异常处理策略

  • 获取或设置异常处理策略

接口定义

namespace Alicloud.Apm.CrashAnalysis
{
  public static class CrashAnalysisConfiguration
  {
    public static ExceptionPolicy ExceptionMode {}
  }
  
  public enum ExceptionPolicy
  {
    Disabled = 0,
    Record = 1,
    ReportImmediately = 2,
    ReportImmediatelyAndQuitApplication = 3
  }
}

参数说明

参数

类型

是否必填

说明

ExceptionMode

enum

Alicloud.Apm.CrashAnalysis.ExceptionPolicy

异常上报模式,对自定义异常、Unity 日志和 CLR 捕获的异常均有效,默认模式是立即上报(ReportImmediately)可选值如下:

  • Disabled: SDK 不处理;

  • Record: SDK 记录下来,待应用下次冷启动上报,条数限制为8条;

  • ReportImmediately: SDK 立即上报,其上报频率与条数受平台配置限制;

  • ReportImmediatelyAndQuitApplication:SDK 立即上报,并在上报完成后主动退出应用,不建议生产环境使用。

代码示例

using Alicloud.Apm.CrashAnalysis;

// 以下是代码示例
// 设置异常处理策略
CrashAnalysisConfiguration.ExceptionMode = ExceptionPolicy.ReportImmediately;
// 获取异常处理策略
ExceptionPolicy exceptionPolicy = CrashAnalysisConfiguration.ExceptionMode;