Cloud Logging 中导出数据的日志架构

本页介绍了 Cloud Logging 中导出的 Crashlytics 数据和 Firebase 会话数据的日志架构。



Crashlytics 个架构

Event

描述单个 Crashlytics 事件的消息。

JSON 表示法

{
  "name": string,
  "platform": string,
  "bundleOrPackage": string,
  "eventId": string,
  "sessionId": string,
  "eventTime": string,
  "receivedTime": string,
  "issue": {
    object (Issue)
  },
  "issueVariant": {
    object (IssueVariant)
  },
  "device": {
    object (Device)
  },
  "memory": {
    object (Memory)
  },
  "storage": {
    object (Storage)
  },
  "operatingSystem": {
    object (OperatingSystem)
  },
  "browser": {
    object (Browser)
  },
  "version": {
    object (Version)
  },
  "user": {
    object (User)
  },
  "customKeys": {
    string: string,
    ...
  },
  "installationUuid": string,
  "crashlyticsSdkVersion": string,
  "appOrientation": string,
  "deviceOrientation": string,
  "logs": [
    {
      object (Log)
    }
  ],
  "breadcrumbs": [
    {
      object (Breadcrumb)
    }
  ],
  "blameFrame": {
    object (Frame)
  },
  "exceptions": [
    {
      object (Exception)
    }
  ],
  "errors": [
    {
      object (Error)
    }
  ],
  "threads": [
    {
      object (Thread)
    }
  ],
  "processState": string,
  "issueTitle": string,
  "issueSubtitle": string,
  "buildStamp": string
}
字段 说明
name string

必需仅限输出。 不可变。标识符。活动资源的名称。格式: projects/{project}/apps/{app_id}/events/{event}

platform string

移动平台(Android 或 iOS)。

bundleOrPackage string

iOS 应用的软件包名称或 Android 应用的软件包名称。 格式:com.mycompany.myapp

eventId string

仅限输出。不可变。唯一事件标识符是在处理期间分配的。

sessionId string

Firebase 会话的唯一标识符。

eventTime string (Timestamp format)

记录事件时的设备时间戳。

采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。也支持“Z”以外的偏移量。示例:“2014-10-02T15:01:23Z”“2014-10-02T15:01:23.045123456Z”或“2014-10-02T15:01:23+05:30”。

receivedTime string (Timestamp format)

Crashlytics 收到事件时的服务器时间戳。

采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。也支持“Z”以外的偏移量。示例:“2014-10-02T15:01:23Z”“2014-10-02T15:01:23.045123456Z”或“2014-10-02T15:01:23+05:30”。

issue object (Issue)

分配给相应 [活动] 的 [问题] 的详细信息。

issueVariant object (IssueVariant)

分配给相应 [Event] 的 [IssueVariant] 的详细信息。

device object (Device)

移动设备元数据。

memory object (Memory)

移动设备的内存用量。

storage object (Storage)

移动设备磁盘/闪存使用情况。

operatingSystem object (OperatingSystem)

操作系统和版本。

browser object (Browser)

浏览器和版本。

version object (Version)

移动应用版本。

user object (User)

设备所有者的最终用户标识符。

customKeys map (key: string, value: string)

开发者在会话期间设置的自定义键。

包含 "key": value 对列表的对象。示例:{ "name": "wrench", "mass": "1.3kg", "count": "3" }。

installationUuid string

设备-应用安装的唯一标识符。此字段用于计算受影响的唯一身份用户数。

crashlyticsSdkVersion string

Crashlytics SDK 版本。

appOrientation string

崩溃时应用的屏幕方向(纵向或横向)。

deviceOrientation string

崩溃时的设备方向(竖屏或横屏)。

logs[] object (Log)

开发者在会话期间记录的日志消息。

breadcrumbs[] object (Breadcrumb)

在会话期间由 Analytics SDK 记录的 Analytics 事件。

blameFrame object (Frame)

Crashlytics 处理流程所归咎的堆栈轨迹帧。在未来的分析器中可能不存在。

exceptions[] object (Exception)

仅限 Android 设备。相应事件期间发生的异常。嵌套异常以反向时间顺序呈现,因此最后一条记录是抛出的第一个异常。

errors[] object (Error)

仅限 Apple。由 iOS SDK 捕获的非严重错误及其堆栈轨迹。

threads[] object (Thread)

记录事件时存在的应用线程。 每个文件都包含一个堆栈轨迹。一个线程将因错误而被归咎。

processState string

事件发生时应用进程的状态。

issueTitle string

相应事件所归入的问题的标题。这通常是源文件或方法名称。

issueSubtitle string

事件所属问题的副标题。这通常是一个符号或一条异常消息。

buildStamp string

应用构建系统提供的元数据,包括版本控制代码库信息。

Memory

移动设备的内存用量。

JSON 表示法

{
  "used": string,
  "free": string
}
字段 说明
used string (int64 format)

使用中的字节数。

free string (int64 format)

可用字节数。

Storage

移动设备磁盘/闪存使用情况。并非所有设备都会报告此指标。

JSON 表示法

{
  "used": string,
  "free": string
}
字段 说明
used string (int64 format)

使用的字节数。

free string (int64 format)

可用字节数。

User

开发者提供的最终用户标识符。

JSON 表示法

{
  "id": string
}
字段 说明
id string

用户 ID(如果应用开发者提供)。

Frame

堆栈轨迹中的一个帧。

JSON 表示法

{
  "line": string,
  "file": string,
  "symbol": string,
  "offset": string,
  "address": string,
  "library": string,
  "owner": string,
  "blamed": boolean
}
字段 说明
line string (int64 format)

帧文件中的行号。

file string

找到帧的源文件的名称。

symbol string

去混淆处理或符号化解析后的框架符号。如果无法水合,则为设备中的原始符号。

offset string (int64 format)

包含代码的二进制图片中的字节偏移量。 原生帧的呈现。

address string (int64 format)

包含代码的二进制映像中的地址。原生帧的呈现。

library string

包含帧的库的显示名。

owner string

DEVELOPER、VENDOR、RUNTIME、PLATFORM 或 SYSTEM 之一。

blamed boolean

如果 Crashlytics 分析已确定此帧很可能是导致错误的原因,则为 true。

Exception

Java 异常及其堆栈轨迹,仅来自 Android 应用。

JSON 表示法

{
  "type": string,
  "exceptionMessage": string,
  "nested": boolean,
  "title": string,
  "subtitle": string,
  "blamed": boolean,
  "frames": [
    {
      object (Frame)
    }
  ]
}
字段 说明
type string

异常类型,例如 java.lang.IllegalStateException。

exceptionMessage string

与异常关联的消息。

nested boolean

对于除最后抛出的异常(即第一条记录)之外的所有异常都为 true。

title string

例外情况的标题。

subtitle string

异常的副标题。

blamed boolean

当 Crashlytics 分析确定此线程是发生故障的位置时,为 true。

frames[] object (Frame)

相应异常的堆栈轨迹中的帧。

Error

非严重错误及其堆栈轨迹,仅限 Apple 应用。

JSON 表示法

{
  "queue": string,
  "code": string,
  "title": string,
  "subtitle": string,
  "blamed": boolean,
  "frames": [
    {
      object (Frame)
    }
  ]
}
字段 说明
queue string

线程正在运行的队列。

code string (int64 format)

与应用自定义记录的 NSError 关联的错误代码。

title string

错误的标题。

subtitle string

错误的副标题。

blamed boolean

当 Crashlytics 分析确定此错误中的堆栈轨迹是发生故障的位置时,为 true。

frames[] object (Frame)

错误堆栈轨迹中的帧。

Thread

应用线程。

JSON representation</code></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code>{
  "crashed": boolean,
  "name": string,
  "queue": string,
  "signal": string,
  "signalCode": string,
  "crashAddress": string,
  "title": string,
  "subtitle": string,
  "blamed": boolean,
  "frames": [
    {
      object (Frame)
    }
  ],
  "threadId": string,
  "sysThreadId": string,
  "threadState": enum (State)
}
字段 说明
crashed boolean

当线程崩溃时为 True。

name string

线程的名称。

queue string

线程正在运行的队列。

signal string

导致应用崩溃的信号的名称。仅出现在崩溃的原生线程上。

signalCode string

导致应用崩溃的信号的代码。仅出现在崩溃的原生线程上。

crashAddress string (int64 format)

导致应用崩溃的信号的地址。仅出现在崩溃的原生线程上。

title string

帖子的标题。

subtitle string

线程的副标题。

blamed boolean

当 Crashlytics 分析确定相应线程中的堆栈轨迹是发生故障的位置时,为 true。

frames[] object (Frame)

相应线程的堆栈轨迹中的帧。

threadId string (int64 format)

线程的 ID,仅适用于 ANR 线程。

sysThreadId string (int64 format)

线程的系统 ID,仅适用于 ANR 线程。

threadState enum (State)

仅限输出。发生 ANR 时线程的状态。

State

发生 ANR 时线程的状态。

枚举 说明
STATE_UNSPECIFIED

未指定线程状态。

THREAD_STATE_TERMINATED

线程已终止。

THREAD_STATE_RUNNABLE

线程可运行。

THREAD_STATE_TIMED_WAITING

线程正在等待,并设置了超时时间。

THREAD_STATE_BLOCKED

相应消息串已被屏蔽。

THREAD_STATE_WAITING

线程正在等待。

THREAD_STATE_NEW

线程已启动,但尚未运行任何内容。

THREAD_STATE_NATIVE_RUNNABLE

该线程是原生线程,我们无法通过启发式方法确定它是否在等待,因此假设它可运行。

THREAD_STATE_NATIVE_WAITING

我们通过启发式方法确定线程正在等待。



Firebase 会话架构

FirebaseSessionEvent

由 Firebase 应用质量会话 SDK 记录的会话。

JSON 表示法

{
  "sessionId": string,
  "eventType": enum (SessionEventType),
  "firstSessionId": string,
  "sessionIndex": integer,
  "firebaseInstallationId": string,
  "eventTime": string,
  "version": {
    object (Version)
  },
  "device": {
    object (Device)
  },
  "operatingSystem": {
    object (OperatingSystem)
  }
}
字段 说明
sessionId string

Firebase 会话的唯一标识符。

eventType enum (SessionEventType)

会话事件类型。该 SDK 目前仅支持 SESSION_START 事件。

firstSessionId string

自上次冷启动以来第一个会话的标识符。对于应用启动,此 ID 和 sessionId 将相同。

sessionIndex integer

表示自上次冷启动以来的会话数。

firebaseInstallationId string

唯一标识安装了 Firebase 应用的设备。

eventTime string (Timestamp format)

会话事件的开始时间戳。

采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。也支持“Z”以外的偏移量。示例:“2014-10-02T15:01:23Z”“2014-10-02T15:01:23.045123456Z”或“2014-10-02T15:01:23+05:30”。

version object (Version)

移动应用版本号。

device object (Device)

移动设备元数据。

operatingSystem object (OperatingSystem)

操作系统和版本。

SessionEventType

记录的 SessionEvent 类型。

枚举 说明
SESSION_EVENT_TYPE_UNKNOWN

未知。

SESSION_START

应用会话已开始。



设备日志架构

DeviceLog

表示 deviceLog 条目的结构。

JSON 表示法

{
  "eventId": string,
  "sessionId": string,

  // Union field payload can be only one of the following:
  "log": {
    object (Log)
  },
  "breadcrumb": {
    object (Breadcrumb)
  }
  // End of list of possible types for union field payload.
}
字段 说明
eventId string

仅限输出。不可变。与此事件关联的事件的标识符。

sessionId string

Firebase 会话的唯一标识符。

联合字段 payload。载荷可以是 Crashlytics 日志,也可以是 Breadcrumb。payload 只能是下列其中一项:

log object (Log)

Crashlytics 日志。

breadcrumb object (Breadcrumb)

Crashlytics 面包屑。

Log

会话期间记录的开发者提供的日志行。

JSON 表示法

{
  "logTime": string,
  "message": string
}
字段 说明
logTime string (Timestamp format)

记录相应行时的设备时间戳。

采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。也支持“Z”以外的偏移量。 例如:“2014-10-02T15:01:23Z”“2014-10-02T15:01:23.045123456Z”或“2014-10-02T15:01:23+05:30”。

message string

日志消息。

Breadcrumb

会话期间记录的 Google Analytics 事件。

JSON 表示法

{
  "eventTime": string,
  "title": string,
  "params": {
    string: string,
    ...
  }
}
字段 说明
eventTime string (Timestamp format)

相应事件的设备时间戳。

采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。也支持“Z”以外的偏移量。 例如:“2014-10-02T15:01:23Z”“2014-10-02T15:01:23.045123456Z”或“2014-10-02T15:01:23+05:30”。

title string

分析事件名称。

params map (key: string, value: string)

事件参数。

包含 "key": value 对列表的对象。 例如:{ "name": "wrench", "mass": "1.3kg", "count": "3" }。