跳过内容

日志

应用 日志 默认打开日志视图。使用 Insights 来优先级别分类、版本和设备,选择 1、3、7 或 30 天的时间段。 日志视图 日志视图 日志 在需要设备事件、过滤器和时间戳的描述下,打开子选项卡。

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

原始日志选项卡概述,显示主界面
原始日志选项卡

原始日志界面包括:

  1. 日志子选项卡 — 个别日志行的导航控制。
  2. 刷新按钮 — 刷新日志列表以获取最新数据。
  3. 时间范围和操作过滤器 — 通过时间和操作来缩小事件流。

每行显示:

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

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

按时间范围筛选

标题:按时间范围筛选

您可以使用日期选择器在特定时间段内筛选日志:

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

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

根据动作类型过滤

标题:根据动作类型过滤

动作下拉菜单允许您通过特定事件类型过滤日志:

用于过滤日志的动作类型下拉菜单
动作过滤器

可用的动作过滤器包括:

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

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

Sample log snippet (fake data)

Sample log snippet (fake data)示例
时间 (UTC)设备 ID动作版本它告诉你什么
2025-01-14 10:00:01A1B2C3get2.4.1设备询问 Capgo 是否有可更新
2025-01-14 10:00:03A1B2C3download_manifest_start2.4.1开始下载文件,SDK 即将下载
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设备在v1.x上无法自动更新到v2.x(阻止了重大版本跳转)
12:05:00y5z6a7b8disableEmulator1.2.0检测到模拟器,并且频道阻止模拟器
12:10:00c9d0e1f2disableDevBuild1.2.0检测到开发版,并且频道阻止开发版

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

日志代码(Capgo 后端枚举)

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

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

快乐路径 & 生命周期

Code(s)含义
get设备要求Capgo获取当前频道清单
download_manifest_start, download_manifest_completemanifest下载开始/完成(对于delta或多文件包)
download_zip_start, download_zip_completezip压缩包下载开始/完成
download_10download_90下载进度里程碑
download_0第一个进度事件的0%进度标记
download_complete整个包下载完成
set包已准备好下一次启动
reset设备已恢复到内置包
delete包已从本地存储中删除
uninstall应用卸载检测
app_moved_to_foreground, app_moved_to_background应用生命周期事件由SDK记录
ping设备健康/心跳检查
setChannel, getChannel通道被SDK调用覆盖或获取

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

标题:新政策阻断/速率限制快速修复
Code为什么会这样下一步该怎么做
invalidIpCapgo 检测到类似机器人流量(Google/云基础设施 IP)。忽略真实用户;从真实设备和正常网络中重试,或者稍后检查。
needPlanUpgrade组织已达到计划/设备限制。在仪表板中升级计划或等待下一个billing周期。
semver_error本地应用程序版本在配置中丢失或无效的semver(x.y.z).设置 plugins.CapacitorUpdater.version 到有效的semver,然后在其中验证它( SemVer 测试器 重新构建应用程序。
disablePlatformIosiOS 在通道策略中被禁用。如果这是意外的,请在该通道中启用 iOS,并重新发布路由。如果您在此跟踪中故意阻止 iOS,请保持禁用状态,并将 iOS 构建移到单独的通道。
disablePlatformAndroidAndroid 在通道策略中被禁用。如果这是意外的,请在该通道中启用 Android,并重新发布路由。如果您在此跟踪中故意阻止 Android,请保持禁用状态,并将 Android 构建移到单独的通道。
disableAutoUpdate通道自动更新模式阻止此更新风格。更改通道自动更新策略(主/次/修订/元数据/无)以允许您的意图部署。
disableAutoUpdateUnderNative通道设置为阻止设备基线以下的更新。推送一个在本机基线以上的版本,或者禁用本机保护。
disableAutoUpdateMetadata通道要求 min_update_version 元数据和应用程序较旧。Set min_update_version 为目标包或发布设置最新的原生版本。
disableAutoUpdateToMajor该频道阻止重大版本跳转。保持同一频道策略中的主要版本,或者允许此跟踪的重大跳转。
disableAutoUpdateToMinor该频道阻止次要版本跳转。保持同一频道策略中的次要版本,或者允许此跟踪的次要跳转。
disableAutoUpdateToPatch该频道阻止此流程的补丁级别跳转。调整您的发布节奏,或者在此跟踪的频道策略中打开补丁级别跳转。
disableEmulator此频道不允许模拟器更新。如果这是意外的,请在测试频道中打开模拟器更新,验证模拟器。如果这是有意的,请保持此频道的模拟器阻塞,并在另一个频道中使用模拟器构建。
disableDevBuild开发版本被此频道阻止。如果这是意外,请允许开发更新或将设备移动到一个支持开发的频道。如果这是有意的,请保持此频道仅锁定发布版本。
disableProdBuild在生产模式下构建的设备被称为 /updates, while your channel blocked it.如果这是意外的,允许在该频道中更新生产版本并重新发布。如果这是有意的,请保留限制并将生产版本发送到正确的频道/构建中。
cannotGetBundleCapgo 未能为所选捆绑包构建有效的下载 URL。重新上传捆绑包或重新生成清单并检查 R2/public 捆绑包设置。
cannotUpdateViaPrivateChannel应用程序尝试将自己切换到不允许自我赋值的私有频道。Enable allow_device_self_set 在频道或切换到公共/允许频道上启用。
channelMisconfigured频道自动更新规则缺少必要的数据(version_number 没有 min_update_version).为该规则填充缺失的配置或切换到更简单的自动更新模式。
missingBundle捆绑包没有可下载的负载(缺少 external_url/r2_path 没有清单).重新构建/重新上传版本并验证捆绑包包含真实文件内容。
NoChannelOrOverride没有匹配该设备的渠道(无云默认 + 无配置回退 + 无覆盖)。在控制台中设置渠道默认值或保留测试 defaultChannel 在该构建中。
rateLimited在短时间内调用太多更新/渠道调用(通常会导致 setChannel/getChannel).在渲染时停止调用。只在用户操作时调用。使用 defaultChannelcapacitor.config.
keyMismatch应用和捆绑包加密密钥ID不同(device_key_id vs bundle_key_id).在控制台中比较设备和捆绑包密钥ID。如果它们不同,请使用相同的密钥和匹配的CLI/插件版本发布;密钥编码可以在版本之间不同。
disableDevice因为该渠道设置为阻止真实设备,这个真实的手机/平板被阻止。If accidental, turn on real-device updates in that channel. If intentional, keep it blocked and route real devices to another channel.
disablePlatformElectronElectron在此频道被阻止。If this was accidental, enable Electron in this channel and republish routing. If intentional, keep it blocked and send Electron users to a dedicated channel.
customIdBlocked一个自定义设备ID被发送,但该应用程序不接受自定义ID。关闭自定义ID发送或仅在您的工作流程要求它时启用自定义ID。
blocked_by_server_urlThe app has server.url 已配置,因此Capacitor将远程URL代替本地文件。Remove/clear server.url 用于生产构建并保持更新负载本地。
backend_refusalThe updater is v4,该后端不再接受。升级插件/CLI v5+ (prefer v8), with Capacitor v5+, 然后重建并重新发布捆绑包元数据。
配置或策略块
Code(s)为什么更新被阻止
disableAutoUpdate, disableAutoUpdateToMajor, disableAutoUpdateToMinor, disableAutoUpdateToPatch, disableAutoUpdateMetadata, disableAutoUpdateUnderNative渠道策略禁止此操作 版本号跳跃
disablePlatformIos, disablePlatformAndroid在此渠道中,平台已被禁用
disableDevBuild, disableEmulator开发构建或模拟器不允许
disableProdBuild, disableDevice, disablePlatformElectron此渠道中生产构建、真实设备或 Electron 都被阻止
customIdBlocked自定义设备 ID 对此应用程序不受支持
cannotUpdateViaPrivateChannel, NoChannelOrOverride, channelMisconfigured__CAPGO_KEEP_0__
missingBundle, cannotGetBundleCapgo
needPlanUpgrade__CAPGO_KEEP_0__已达到计划/设备限制

下载/完整性/安装失败

Code(s)解释
download_fail网络或响应错误,无法下载包
download_manifest_file_fail, download_manifest_checksum_fail, download_manifest_brotli_fail无法获取或验证清单文件
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报告了应用程序未响应。
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_changedOS 或原生应用程序版本发生变化;这有助于将平台级别的发布效果与 Web 包行为分开。

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

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

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

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

继续从日志中

标题:继续从日志中

如果您正在使用 日志 为计划仪表板和API操作,连接它 API概览 在API概览中了解实现细节 简介 在简介中了解实现细节 API密钥 在API密钥中了解实现细节 设备 在设备中了解实现细节 捆绑包 在捆绑包中了解实现细节