Log Validation
日志校验平台
日志获取
选择本次校验的日志来源:本地上传或看板接口查询。
数据来源
本地上传与看板接口查询互斥;接口查询通过后端代理读取。日志文件上传
上传日志明细文件,或下载示例查看表头格式。看板接口查询
通过本地后端代理调用 BDC 看板接口,查询成功后进入自动校验。--
项目设置
上传事件埋点和用户属性埋点配置,并设置本次校验口径。
事件埋点与用户属性埋点
用于读取自定义事件清单和用户属性清单;本地上传和看板接口查询都可以使用。自动校验日志源
用于记录本次自动校验的日志范围,导出后会记录到「验收汇总」。验收说明
这里说明链路划分、字段规则和各类校验结果的判定口径。
前置说明
自动校验中有多项规则依赖链路划分,以下为本次采用的链路口径说明
链路定义
打开链路:范围为同一设备的全部日志;按 time 从小到大排序;从首次出现 sdk_init_success / open_game / channel_info / app_install / device_info 这 5 类事件开始;当这 5 类事件中任意一类再次出现且距离当前链路起点超过 3 秒,即视为下一段打开链路开始;gp_install_referrer 可能延迟上报,不作为打开链路起始事件。
校验规则
各项验收结果将按以下规则分组展示,共 8 个大类、35 个小类。
1. 触发时机验收
人工验收1.1 触发时机人工验收:由验收人员对照游戏内行为与日志时间,确认打开、登录账号、登录角色、充值、游戏内点退出、强退退出等触发时机是否一致,并填写备注。
1.2 在线统计频率异常:按区服 server_id 校验 online_scene 上报频率;同一区服约每 5 分钟上报一次,相邻两次允许 5 秒误差。
2. 全局必传字段校验
2.1 全局必传字段缺失:track 类型日志中,所有客户端和服务端日志都必须上报 #channel_id、#app_channel_id、#img_channel_id、#os、#platform、#data_source;其中 #app_channel_id、#img_channel_id 可为空;用户属性日志必须上报 #platform,但不要求 #data_source;服务端 monitor 日志必须上报 #platform、#data_source;服务端 track 日志必须上报 #user_ip,客户端日志不能上报 #user_ip。
2.2 客户端 track 日志必传字段缺失:客户端 track 日志需按 #os 对应平台上报客户端 track 属性组字段;本项只校验字段是否上报,字段值为 null 或空字符串不判定为缺失。
2.3 客户端 user 日志必传字段缺失:客户端 user 属性日志需上报客户端 user 属性组字段。
3. 字段对应关系校验
3.1 镜像渠道标识对应异常:按当前映射规则校验 #channel_id 与 #img_channel_id 是否满足固定对应关系;已内置默认表,支持单独上传新版规则和导出当前映射规则;设置为无镜像渠道时不校验此项。
3.2 链路内关键字段不统一:检查每段打开链路内 track 日志的 #channel_id、#app_channel_id、#img_channel_id 是否一致;这 3 个字段只对 track 日志参与比较,user 属性日志和 monitor 日志不参与一致性校验;参与比较的日志中,空值也参与一致性比较,未上报、null、空字符串、0 都视为不同取值,链路内不能混用。
3.3 角色账号不唯一:检查每段打开链路内,同一个 #role_key 是否只对应一个 #account_id;若同一角色出现多个账号值则记为异常。
3.4 渠道固定值异常:填写包 #channel_id 或设置包 #app_channel_id / #img_channel_id 后,已上报的对应字段值必须与配置一致;选择无次级渠道或无镜像渠道时,已上报字段的值必须为空。
4. 预置事件校验
4.1 预置事件完整性:统计 24 个预置事件各自是否至少出现 1 条,并展示每个事件的上报条数。
4.2 预置事件字段缺失:对 24 个预置事件按各自字段规则校验必传字段是否已上报;除 #oaid / #gaid 因可能延迟上报只要求字段存在外,其它 4.2 必传字段未上报、上报为 null 或空字符串均判定为缺失;客户端预置事件会根据 #os 校验 WINDOWS / Android / iOS / HarmonyOS 对应的预置事件设备相关字段;charge_info、user_login、create_role、role_login、role_logout 会根据 #os 额外校验服务端归因设备字段。
4.3 预置事件字段异常:校验已上报但取值不符合枚举或规则的预置事件字段;例如 sdk_login 的 login_state 只能为 0、1、2、3,charge_info 的 #amount 小数位最多 2 位。
4.4 预置事件主体字段异常:仅校验预置事件的 #device_id、#account_id、#role_key 主体要求;主体要求按预置事件定义判断,#platform 异常由 4.5 单独校验;monitor 事件应无主体,login、logout 需携带设备且 #account_id / #role_key 至少有一个有值;sdk_login 需携带设备、login_state=1 时需携带 #account_id,#role_key 可不报、为 null 或为空字符串,但不应为 0 或其它值,其它预置事件按客户端/服务端主体规则校验。
4.5 预置事件 #platform 异常:校验预置事件的 #platform 是否符合客户端/服务端归属。
5. 自定义事件校验
5.1 自定义事件缺失:读取上传 Excel 第二页自定义事件清单,校验第一页日志中对应自定义事件是否至少出现 1 条。
5.2 自定义事件多报:检查第一页日志中是否上报了第二页自定义事件清单之外的自定义事件。
5.3 自定义事件字段缺失:对已出现的自定义事件,按第二页字段清单校验是否缺少对应字段。
5.4 自定义事件主体字段异常:清单内自定义事件若为 monitor 日志,则不能上报 device_id、account_id、role_key。
6. 自定义用户属性校验
6.1 自定义用户属性缺失:读取上传 Excel 的第三页用户属性清单,校验日志中是否上报对应用户属性。
6.2 自定义用户属性多报:检查用户属性日志中是否上报了第三页用户属性清单之外的用户属性。
6.3 自定义用户属性操作类型异常:校验用户属性日志中的 type 是否与第三页期望值一致。
6.4 自定义用户属性维度异常:校验用户属性日志中的 user_type 是否与第三页维度配置一致。
7. 特殊事件校验
7.1 打开必有事件缺失:检查每段打开链路起点后 3 秒内是否同时包含 sdk_init_success 和 open_game。
7.2 客户端登录事件缺失:检查每段打开链路内,若出现 user_login / create_role / role_login 等服务端登录事件,则同一打开链路内应上报客户端 login 和有效 sdk_login;有效 sdk_login 指:上报了 login_state 时仅 login_state=1 有效,未上报 login_state 时默认有效。
7.3 客户端所有事件缺失:按 #device_id 检查是否存在已上报任意 #platform=SERVER 服务端日志、但没有任何 #platform=CLIENT 客户端日志的设备;本项识别 SERVER / CLIENT 时不区分大小写,但会提示 #platform 大小写或取值异常,具体异常由 8.9 校验;若全量数据未识别到任何 SERVER 日志,也会给出提醒;若该设备存在日志未上报 #platform,本项会同时提示 #platform 缺失导致无法确认客户端日志,2.1 也会校验 #platform 必传字段缺失;若首条服务端日志接近自然日 0 点,结果仅作为跨天查询截断提醒。
7.4 事件重复上报:检查每段打开链路内不允许连续重复的预置事件;若整份数据没有可识别的打开链路,则不校验此项。其中 login 事件允许连续上报 2 次,但必须一条仅带账号、另一条同时带账号和角色,若连续上报 3 次及以上,或连续 2 次时主体组合不符合该口径,均记为异常;sdk_login 连续上报时,login_state 相同则记为异常,login_state 不同则允许;charge_info 允许重复;online_scene 不参与重复校验。
8. 特殊字段校验
8.1 #oaid / #gaid 异常:按 #os 识别 Android / HarmonyOS 日志,并按打开链路校验不同地区对应的重要设备标识。
- 仅 Android / HarmonyOS 非母包日志(#channel_id 不为 0)需按项目地区上报对应字段:国内项目要求 #oaid,海外项目要求 #gaid;iOS / WINDOWS 日志不校验 #oaid / #gaid。
- #oaid / #gaid 必须按字符串格式上报,不能上报为数值、布尔值、对象等其他类型。
- 若本次打开链路内存在 device_info,则链路内必须至少有一条 device_info 携带 #oaid / #gaid;并且从首次携带 #oaid / #gaid 的 device_info 之后开始,客户端自采集预置事件都需持续携带该字段。若字段格式不符合要求,仅按第 2 条判定为格式异常,不连带判定为缺失。若链路内没有 device_info,则该链路内所有客户端自采集预置事件都需携带该字段。
- 同时统计整份数据中 Android / HarmonyOS 去重设备的 #oaid / #gaid 获取率;设备数达到 8 个后,#oaid 获取率低于 75% 或 #gaid 获取率低于 90% 记为异常。
8.2 #user_agent 异常:按客户端 track 属性组、服务端归因属性组的平台适用范围校验 #user_agent;PC 不要求。若链路内存在需校验的 device_info,则至少一条 device_info 需携带有效 #user_agent,且首次有效上报后需校验的日志需持续携带;若链路内没有需校验的 device_info,则链路内需校验的日志都需携带。
8.3 IP 字段异常:校验 user_ip、reg_ip、last_ip 是否为真实公网 IP,支持 IPv4 和 IPv6;内网 IP、回环 IP、保留地址会记为异常。
8.4 os 字段异常:os 仅允许上报 IOS、ANDROID、HarmonyOs、WINDOWS、MAC、WEB,大小写必须与枚举值一致;同一 #device_id 下 #os 应保持一致,不能同时出现多个系统值。
8.5 online_time字段异常:按同账号、同角色、同设备找到每次 role_logout 前的最近一次 role_login,校验 role_logout 事件上报的 online_time 是否接近两次日志的上报时间差。
含人工验收8.6 payment_method字段异常:自动校验 payment_method 只能以文本格式上报 1-5;并由验收人员人工确认付款方式与游戏内实际操作一致:1 sdk支付,2 虚拟支付,3 英雄线下付款,4 CDK激活,5 代币支付。
8.7 appflyer_id字段异常:接入 AppFlyer 时,所有 platform=CLIENT 的客户端日志,以及 charge_info、user_login、create_role、role_login、role_logout 这 5 个服务端事件都需上报 appflyer_id;同一设备上报的 appflyer_id 应保持一致;未开启接入时不应上报 appflyer_id。
8.8 #click_id 异常:未开启接入 #click_id 字段时不应上报 #click_id;开启后若按平台规则应上报但缺失,归入 4.2 预置事件字段缺失。
8.9 #platform 异常:#platform 只能上报 SERVER 或 CLIENT,大小写必须与枚举值一致,其它任何取值均记为异常。
8.10 系统生成字段误报:用户日志中不允许上报 platform、server_time、process_time、dt、game_key。
8.11 数值精度异常:按原始日志值判断所有 number 类型字段,小数位超过 6 位时记为疑似浮点精度异常;charge_info 的 #amount 由 4.3 单独校验,不在此项重复报错。
人工验收填写
填写触发时机和特殊字段的人工验收结论。
触发时机人工验收 人工验收
对照游戏内操作与上报日志时间打开应用
登录账号
登录角色
充值
游戏内点退出
强退退出
验收操作记录
填写后会记录到导出文档的「人工验收留存」sheet。特殊字段人工验收 人工验收
对照游戏内操作与上报日志字段值付款方式payment_method验收
左侧数字 1-5 为日志字段 payment_method 的取值,需与游戏内付款方式一致。
校验结果
查看验收结果总览、自动校验明细和数据预览。
等待日志文件
上传后会显示验收汇总、校验结果明细和数据预览。