跳过内容

日志

日志和日志洞察

日志和日志洞察

应用 日志 tab 打开 日志洞察 默认情况下。使用洞察来优先考虑类别、版本和设备的 1、3、7 或 30 天时间段。切换到 日志 当您需要以下设备事件、过滤器和时间戳时,切换到子选项卡。

了解应用程序日志

了解应用程序日志

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

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

原始日志界面包括:

  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_backgroundSDK记录的应用程序生命周期事件
ping设备的健康/心跳检查
setChannel, getChannel通过SDK调用覆盖或获取频道

新政策阻塞/限制快速修复

快速修复新政策阻塞/限制
Code为什么会这样下一步该怎么做
invalidIpCapgo检测到看起来像机器人流量(Google/云基础设施IP)。忽略真实用户;从真实设备和正常网络重试,或者稍后检查。
needPlanUpgrade组织已达到计划/设备限制。在仪表板中升级计划或等待下一个billing周期。
semver_errorNative app version in config is missing or not valid semver (x.y.z).设置 plugins.CapacitorUpdater.version 到有效的 semver, 然后在 SemVer 测试器 中验证并重建应用。 iOS 在渠道策略中被禁用。
disablePlatformIos如果这是意外的,请在该渠道中启用 iOS 并重新发布路由。如果您故意在此跟踪中阻止 iOS,保持它关闭并将 iOS 构建移到一个单独的渠道。Android 在渠道策略中被禁用。
disablePlatformAndroid如果这是意外的,请在该渠道中启用 Android 并重新发布路由。如果您故意在此跟踪中阻止 Android,保持它关闭并将 Android 构建移到一个单独的渠道。渠道自动更新模式阻止此更新风格。
disableAutoUpdate更改渠道自动更新策略(主/次/修订/元数据/无)以允许您的意图发布。渠道设置为阻止设备基线以下的更新。
disableAutoUpdateUnderNative__CAPGO_KEEP_0__推送一个在本机基线以上或等于的版本,或者禁用本机保护
disableAutoUpdateMetadata渠道需要 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).在渲染时停止调用。只在用户操作时调用。使用 defaultChannel 应用和包加密密钥ID不同( 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无法获取或验证清单文件
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概览中的实现细节 介绍 了解介绍中的实现细节 API密钥 了解API密钥中的实现细节 设备 了解设备中的实现细节 应用包 查看应用包的详细信息。