跳过内容

日志

日志和日志洞察

日志和日志洞察

应用 日志 tab opens Log Insights 根据默认设置。使用Insights来优先显示类别、版本和设备的日志记录,时间范围为1、3、7或30天。切换到 日志 subtab when you need the underlying device events, filters, and timestamps described below.

日志子项时,您需要查看以下设备事件、过滤器和时间戳。

理解应用日志

The raw Logs subtab provides a detailed history of update events and diagnostic information for your application. It is useful for confirming the device-level evidence behind an Insight, troubleshooting an update path, and understanding how devices interact with Capgo. Open an app, choose Capgo Builder中的原始日志子项提供了应用程序更新事件和诊断信息的详细历史记录。它有助于确认设备级证据、排查更新路径以及了解设备如何与__CAPGO_KEEP_0__交互。打开一个应用,选择日志 Logs 日志子项。

原始日志标签概述显示主界面
原始日志标签

原始日志界面包括:

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

每行显示:

  • 时间戳 (UTC)
  • 设备 ID
  • 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.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-__CAPGO_KEEP_0__

__CAPGO_KEEP_1__: __CAPGO_KEEP_2__ __CAPGO_KEEP_3__

__CAPGO_KEEP_4__

频道配置阻止更新

标题:频道配置阻止更新

当频道设置阻止更新时:时间设备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_complete清单下载开始/完成(对于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_errorNative app version in config 缺失或不是有效的 semver (x.y.z).设置 plugins.CapacitorUpdater.version 为有效的 semver, 然后在 SemVer 测试器 中验证并重建应用程序。
disablePlatformIosiOS 在渠道策略中被禁用。如果这是意外的,请在该渠道中启用 iOS 并重新发布路由。如果您故意在此跟踪中阻止 iOS,请保持它关闭并将 iOS 构建移到一个单独的渠道。
disablePlatformAndroidAndroid 在渠道策略中被禁用。如果这是意外的,请在该渠道中启用 Android 并重新发布路由。如果您故意在此跟踪中阻止 Android,请保持它关闭并将 Android 构建移到一个单独的渠道。
disableAutoUpdate渠道自动更新模式阻止此更新风格。更改渠道自动更新策略(主/次/修订/元数据/无)以允许您的意图发布。
disableAutoUpdateUnderNative渠道设置为阻止设备基线以下的更新。推送一个或以上的本机基线版本,或者禁用本机保护。
disableAutoUpdateMetadataChannel 需要 min_update_version 元数据和应用程序较旧。设置 min_update_version 为目标捆绑包或发布从新本机版本。
disableAutoUpdateToMajor该频道阻止主要版本跳跃。保持主要版本在同一频道策略中,或者允许主要跳跃此条目。
disableAutoUpdateToMinor该频道阻止次要版本跳跃。保持次要版本在同一频道策略中,或者允许次要跳跃此条目。
disableAutoUpdateToPatch该频道阻止此流程的补丁级别跳跃。调整您的发布节奏,或者在频道策略中打开补丁级别跳跃此条目。
disableEmulator此频道不允许模拟器更新。如果这是意外的,请在测试频道中启用模拟器更新,在那里您验证模拟器。如果这是有意的,请在模拟器频道上阻止此频道并使用另一个频道进行模拟器构建。
disableDevBuild此频道的开发版已被阻止。如果这是意外的,请允许开发版更新或将设备移动到启用开发版的频道。如果这是有意的,请将此频道锁定为仅发布版本。
disableProdBuild在生产模式下发布的设备称为 /updates,而您的频道阻止了它。如果这是意外的,请在该频道中允许生产更新并重新发布。如果这是有意的,请保留限制并将生产版发送到正确的频道/构建。
cannotGetBundleCapgo 未能为所选捆绑包构建有效的下载URL。重新上传捆绑包或重新生成清单并检查R2/public捆绑包设置。
cannotUpdateViaPrivateChannel应用程序尝试将自己切换到不允许自我赋值的私有频道。请在频道上启用 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因为这个频道设置为阻止真实设备,这个真实的手机/平板被阻止了。如果是意外的,请在该频道中打开真实设备更新。如果是有意的,请保持它被阻止并将真实设备路由到另一个频道。
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__CAPGO_KEEP_0__不接受自定义设备ID
cannotUpdateViaPrivateChannel, NoChannelOrOverride, channelMisconfigured渠道选择或覆盖失败
missingBundle, cannotGetBundleCapgo无法提供的捆绑包
needPlanUpgrade组织已达到计划/设备限制

下载/完整性/安装失败

Code(们)解释
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_changed操作系统或原生应用版本发生变化;这有助于将平台级别的发布效果与 Web 包行为区分开来。

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

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

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

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

继续查看日志

继续从日志中前进

如果您正在使用 日志 to plan dashboard and API operations, connect it with API概览 API概览 __CAPGO_KEEP_0__概览 介绍 API密钥 for the implementation detail in API Keys, __CAPGO_KEEP_0__密钥 设备 查看包的实现细节。