跳过内容

Logs

日志和日志洞察

日志和日志洞察

应用 日志 日志选项卡打开 日志见解 默认情况下使用Insights来优先分类、版本和设备,选择1、3、7或30天的时间段。切换到 日志 日志

了解应用程序日志

了解应用程序日志

原始日志子选项卡提供了应用程序更新事件和诊断信息的详细历史记录。它有助于确认设备级别的证据、排查更新路径以及了解设备如何与Capgo交互。打开一个应用程序,选择 日志然后选择 日志 原始日志选项卡概述

日志选项卡
原始日志标签

原始日志界面包含:

  1. 日志子标签 — 每个日志行的导航控制。
  2. 刷新按钮 — 使用最新数据刷新日志列表。
  3. 时间范围和操作过滤器 — 根据时间和操作过滤事件流。

每行显示:

  • 时间戳 (UTC)
  • 设备ID
  • Action code (发生了什么)
  • 版本名称 (捆绑或) builtin)

点击一行以跳转到该设备详细页面查看其完整历史记录。

用于筛选日志的日期选择器

日期范围筛选
快速预设
  1. - 选择常见时间范围:最近1小时、3小时、6小时或12小时 按日期范围筛选
  2. 开始时间 设置自定义开始时间范围
  3. 结束时间 设置自定义结束时间范围
  4. 日历 使用日历视图选择特定日期

点击“选择”应用所选日期范围,或者“取消”关闭日历选择器。

根据动作类型过滤

动作类型过滤

动作类型过滤下拉菜单,用于根据事件类型过滤日志

动作类型过滤
动作类型过滤

可用的操作过滤器包括:

  • 设备心跳 - 设备周期性进行健康检查
  • 删除版本请求 - 当删除一个版本包时
  • 恢复默认版本 - 当设备恢复到内置版本包时
  • 版本安装成功 - 成功安装版本包
  • 新版本发送到设备 - 当Capgo向设备发送更新时
  • 版本安装失败 - 安装包安装失败时

您可以使用顶部的搜索框快速找到特定动作类型。您可以选择多个动作以显示匹配任何选定类型的日志。

示例日志片段(假数据)

标题:示例日志片段(假数据)
时间(UTC)设备ID动作版本它告诉您什么
2025-01-14 10:00:01A1B2C3get2.4.1设备询问 Capgo 是否有可用更新
2025-01-14 10:00:03A1B2C3download_manifest_start2.4.1delta下载启动;SDK 即将下载更改的delta文件
2025-01-14 10:00:07A1B2C3download_402.4.1包下载完成40%
2025-01-14 10:00:12A1B2C3download_zip_complete2.4.1Zip下载完成
2025-01-14 10:00:13A1B2C3set2.4.1已安装并标记为下一次运行的捆绑包
2025-01-14 10:05:00B9C8D7disableAutoUpdateToMajor1.9.0频道策略阻止了跳转到2.x
2025-01-14 10:05:05B9C8D7rateLimited内置设备已达到请求限制;SDK将在重启后恢复

示例日志场景

标题:示例日志场景

为了帮助您了解日志的含义,我们提供了示例序列,展示了设备更新的真实旅程:

成功更新流程

标题:成功更新流程

这是您的日志中健康更新的样子:

时间设备 ID动作版本说明
10:00:01a1b2c3d4get1.2.0设备检查更新并接收到版本 1.2.0 信息
10:00:02a1b2c3d4download_101.2.0下载开始,10% 完成
10:00:03a1b2c3d4download_501.2.0下载中,50%
10:00:05a1b2c3d4download_complete1.2.0下载成功
10:00:06a1b2c3d4set1.2.0包安装并激活

设备已是最新版本

设备已是最新版本

当设备检查更新但已经有最新版本时:

时间设备ID动作版本说明
14:30:00e5f6g7h8noNew1.2.0设备已经处于最新版本,更新不需要

更新失败并回滚

标题:更新失败并回滚

当更新失败并设备回滚时:

时间设备ID动作版本它意味着什么
11:15:00i9j0k1l2get1.3.0设备接收到更新信息
11:15:02i9j0k1l2download_complete1.3.0下载完成
11:15:03i9j0k1l2set1.3.0包已设置
11:15:10i9j0k1l2update_fail1.3.0应用程序崩溃或 notifyAppReady() 未被调用 - 回滚触发
11:15:11i9j0k1l2reset内置设备回滚到内置版本

需要行动: 检查您的应用程序在初始化后是否正确调用 notifyAppReady() 成功初始化后。 请参见 插件文档 详细信息请参阅。

下载失败

下载失败

当网络问题阻止下载时:

时间设备ID动作版本说明
09:45:00m3n4o5p6get1.2.0设备接收到更新信息
09:45:01m3n4o5p6download_301.2.0下载开始但…
09:45:15m3n4o5p6download_fail1.2.0下载失败(网络超时、连接丢失等)

需要采取行动: 设备将在下次应用启动时自动重试。除非频繁发生此问题,否则无需采取任何行动。

达到计划限制

计划限制已达到

当您的帐户达到设备限制时:

时间设备ID操作版本说明
16:00:00q7r8s9t0needPlanUpgrade-此设备将在您升级或billing周期重置后才能接收更新

需要采取行动: 升级您的计划 或等待下一个计费周期。

频道配置阻止更新

频道配置阻止更新

当频道设置阻止更新时:

时间设备ID操作版本它意味着什么
12:00:00u1v2w3x4disableAutoUpdateToMajor2.0.0设备无法自动更新到v2.x(重大版本跳转被阻止)
12:05:00y5z6a7b8disableEmulator1.2.0模拟器检测,并且频道阻止模拟器
12:10:00c9d0e1f2disableDevBuild1.2.0开发版检测,并且频道阻止开发版

需要动作: 这些都是故意的保护措施。如果您想允许这些更新,修改您的 频道设置.

日志代码 (Capgo 后端枚举)

标题:日志代码 (Capgo 后端枚举)

这些代码来自 stats_action 枚举由控制台 API 使用(capgo/src/types/supabase.types.ts)。如果您看到新的 code 在 UI 中,它是由 SDK 或后端发出的,并且已验证为此列表中的项。

happy path & 生命周期

Code(s)含义
getCapgo 设备请求其频道关联的包
download_manifest_start, download_manifest_completedelta 下载开始/完成(对于上传 delta 文件的包)
download_zip_start, download_zip_completezip 压缩包下载开始/完成
download_10 … download_90下载进度里程碑
download_0第一个进度事件的 0% 进度标记
download_complete整个包下载完成
set包准备就绪,下次启动时使用
reset设备切换回内置包
delete本地存储中删除包
uninstall应用卸载检测
app_moved_to_foreground, app_moved_to_backgroundSDK 记录的应用生命周期事件
ping设备健康/心跳检查
setChannel, getChannel通道被覆盖或通过SDK调用获取

新政策阻断/速率限制快速修复

新政策阻断/速率限制快速修复
Code为什么会这样下一步做什么
invalidIpCapgo检测到类似机器人流量(Google/云基础设施IP)忽略真实用户;从真实设备和正常网络重试,或者稍后检查
needPlanUpgrade组织已达到计划/设备限制在控制台升级计划或等待下一个billing周期
semver_error本地应用程序版本在配置中丢失或无效的semver(x.y.z).设置 plugins.CapacitorUpdater.version 然后在 SemVer 测试器 并重建应用。
disablePlatformIosiOS 在渠道策略中被禁用。如果这是意外的,请在该渠道中启用 iOS 并重新发布路由。如果您故意在此跟踪中阻止 iOS,请保持它关闭并将 iOS 构建移到一个单独的渠道。
disablePlatformAndroidAndroid 在渠道策略中被禁用。如果这是意外的,请在该渠道中启用 Android 并重新发布路由。如果您故意在此跟踪中阻止 Android,请保持它关闭并将 Android 构建移到一个单独的渠道。
disableAutoUpdate渠道自动更新模式阻止此更新风格。更改渠道自动更新策略(主/次/修订/元数据/无)以允许您的意图发布。
disableAutoUpdateUnderNative渠道设置为阻止更新,更新版本低于设备基线。推送一个版本或以上的本机基线,或者禁用低于本机保护。
disableAutoUpdateMetadata频道需要 min_update_version 元数据并且应用程序较旧。设置 min_update_version 为了目标包或发布从新native版本
disableAutoUpdateToMajor频道阻止了主要版本跳跃。保持主要版本在同一频道策略中,或者允许主要跳跃此条目。
disableAutoUpdateToMinor频道阻止了次要版本跳跃。保持次要版本在同一频道策略中,或者允许次要跳跃此条目。
disableAutoUpdateToPatch频道阻止了此流程的补丁级别跳跃。对齐您的发布节奏,或者在此通道策略中打开补丁级别跳跃。
disableEmulator模拟器更新不允许此频道。如果这是意外的,请在测试频道中打开模拟器更新并验证模拟器。如果是有意的,请保持此频道模拟器阻塞并在另一个频道中使用模拟器构建。
disableDevBuild本渠道的开发版已被阻止。如果这是意外的,请允许开发版更新或将设备移动到支持开发版的渠道。如果这是有意的,请锁定该渠道仅允许发布版更新。
disableProdBuild一个生产模式的设备构建被称为 /updates,而您的渠道阻止了它。如果这是意外的,请允许在该渠道中发布生产版更新并重新发布。如果这是有意的,请保留限制并将生产版发送到正确的渠道/构建中。
cannotGetBundleCapgo 无法为所选捆绑包生成有效的下载 URL。重新上传捆绑包(如果您想使用delta文件,请使用)并检查R2/public捆绑包设置。 --delta 应用程序尝试将自己切换到一个不允许自我赋值的私有渠道。
cannotUpdateViaPrivateChannel请在渠道上启用Enable allow_device_self_set 渠道自动更新规则缺少所需的数据(
channelMisconfigured本渠道的开发版已被阻止。version_number 没有 min_update_version).填充缺失的配置以适应该规则或切换到更简单的自动更新模式。
missingBundle没有可下载的包装文件(缺失“”和“”)。 external_url/r2_path 重建/重新上传版本并验证包装有真实文件内容。没有匹配该设备的频道(没有云默认值+没有配置回退+没有覆盖)。
NoChannelOrOverride在控制台中设置频道默认值或保留测试在该构建中。 defaultChannel 在短时间内调用太多更新/频道调用(通常是渲染循环中的)
rateLimited停止在渲染中调用。只在用户操作时调用。使用 setChannel/getChannel).在 defaultChannel in capacitor.config.
keyMismatch应用和捆绑包加密密钥ID不一致(device_key_id vs bundle_key_id).在控制台中,比较设备和包裹密钥ID。如果它们不同,请使用相同的密钥和匹配的CLI/插件版本发布;密钥编码可以在版本之间不同。
disableDevice因为这个频道设置为阻止真实设备,这个真实手机/平板被阻止了。如果是意外的,请在这个频道中打开真实设备更新。如果是有意的,请保持它被阻止并将真实设备路由到另一个频道。
disablePlatformElectron在这个频道中,Electron被阻止。如果这是意外的,请在这个频道中启用Electron并重新发布路由。如果是有意的,请保持它被阻止并将Electron用户路由到一个专门的频道。
customIdBlocked发送了一个自定义设备ID,但这个应用程序不接受自定义ID。关闭自定义ID发送或仅在您的工作流程要求它时启用自定义ID。
blocked_by_server_url这个应用程序已 server.url 配置了,所以Capacitor会提供远程URL而不是本地文件。清除 server.url 用于生产构建并保持更新负载本地。
backend_refusal更新器已 v4, 服务器端不再接受此更新。升级插件/CLI 到 v5+ (推荐 v8), 使用 Capacitor v5+, 然后重建并重新发布包元数据。
配置或策略阻止
Code(s)更新被阻止的原因
disableAutoUpdate, disableAutoUpdateToMajor, disableAutoUpdateToMinor, disableAutoUpdateToPatch, disableAutoUpdateMetadata, disableAutoUpdateUnderNative渠道策略禁止此更新 版本号跳跃
disablePlatformIos, disablePlatformAndroid平台在此渠道上被禁用
disableDevBuild, disableEmulator开发版或模拟器不允许
disableProdBuild, disableDevice, disablePlatformElectron生产版、真实设备或 Electron 将被阻止
customIdBlocked自定义设备 ID 不被接受
cannotUpdateViaPrivateChannel, NoChannelOrOverride, channelMisconfigured渠道选择或覆盖失败
missingBundle, cannotGetBundle此渠道指向无法提供的包 Capgo
needPlanUpgrade组织已达到计划/设备限制

下载/完整性/安装失败

Code(s)含义
download_fail包下载失败(网络或响应错误)
download_manifest_file_fail, download_manifest_checksum_fail, download_manifest_brotli_fail无法获取或验证 delta 文件
checksum_fail, checksum_required完整性检查失败或缺少校验和
unzip_fail, directory_path_fail, canonical_path_fail, windows_path_fail文件系统或解压验证失败
decrypt_fail解密失败(加密包)
update_fail包已安装但应用程序从未调用 notifyAppReady(); 回滚触发
download_zip_* 无后续 set下载完成但安装阶段从未完成

运行时/平台事件

标题:运行时/平台事件
Code(s)含义
app_crash, app_crash_nativeJavaScript或本机运行时层面的崩溃事件。元数据通常包括堆栈、源代码和活动版本信息。
app_anrAndroid报告了一个Application Not Responding。
app_killed_low_memory, app_killed_excessive_resource_usage由于内存或资源限制,应用进程被终止。
app_initialization_failure, app_memory_warning应用启动被中断或在正常运行前观察到内存压力。
webview_javascript_error, webview_unhandled_rejection, webview_resource_error, webview_security_policy_violation, webview_unclean_restart, webview_render_process_gone, webview_content_process_terminatedWebView 生命周期和 JS/渲染错误。 在 JS 和原生层中安装 Sentry,捕获堆栈跟踪、会话/设备上下文和 URL/状态以实现更快的修复。
os_version_changed, native_app_version_changed操作系统或原生应用版本发生变化;这有助于将平台级别的发布效果与 Web 包行为分开。

➡️ 需要更深入的code指导?请参阅 完整日志Code参考和调试指南.

获取更多关于日志的详细信息

标题:获取更多关于日志的详细信息

如果您点击特定日志条目,它通常会将您带到 设备的页面。 这使您可以看到该设备的完整历史记录,这对于诊断设备特定的问题或了解其更新旅程非常有帮助。

如果您正在使用 日志 为了规划仪表板和API操作,连接它 API 总览 关于API概述 Introduction 查看__CAPGO_KEEP_0__ 概览 查看API 概览 为API的实现细节提供的键。 查看介绍 __CAPGO_KEEP_0__ 密钥管理系统 软件包 软件包的实现细节。