Guise Reborn 日志系统 — 级别筛选、搜索、导出
日志的作用
Guise 的日志帮你回答三个问题:
- 某个目标应用的 Hook 成功了没?
- 如果没成功,是哪一步出了问题?(Hook 加载失败?配置读取失败?)
- 是普遍问题还是个别问题?(某应用 Hook 失败,还是所有应用都失败)
日志链路(Reborn 重构)
原版 Guise 日志链路依赖 ContentProvider、目标进程逐条写管理端数据库,还有 Activity 生命周期批量落盘——复杂而且容易出错。Reborn 重新设计为:
| 环节 | 说明 |
|---|---|
| 目标进程 | 只保留每进程最近 12 条待投递记录,不无限增长 |
| 投递方式 | 显式组件批量投递到 Guise 的 Room 数据库 |
| 接收端 | 校验发送 UID,防止其他应用伪造日志 |
| 管理端存储 | 去重后最多保存 2,000 条 |
日志内容
包含的
| 字段 | 说明 |
|---|---|
| 时间戳 | 精确到毫秒 |
| 级别 | ERROR / INFO / DEBUG |
| 目标包名 | 哪个应用的日志 |
| 进程名 | 哪个进程 |
| Hook 类别 | 设备、标识符、网络等哪个通道 |
| 消息文本 | Hook 结果、错误信息 |
| 完整异常堆栈 | 出错时带完整堆栈,方便排查 |
不包含的(明确的隐私边界)
- ❌ 页面内容
- ❌ 账号、密码、Cookie
- ❌ 应用内输入
- ❌ 照片、视频
- ❌ 位置、网络内容
- ❌ 系统全量 Logcat(Guise 自己有独立日志)
- ❌ 日志数据库不参与 Android 系统备份
日志级别筛选
| 级别 | 默认开启 | 说明 |
|---|---|---|
| ERROR | ✅ 始终记录 | Hook 加载失败、配置读取失败等错误 |
| INFO | ✅ 始终记录 | Hook 加载成功、配置应用等信息 |
| DEBUG | ⚙️ 可开关 | 详细的 Hook 配置明细(默认关闭) |
详细日志默认关闭。 关闭后不查询目标应用 Context、不排队重试、不发广播——避免日志功能额外留下常驻生命周期 Hook。只有当你需要深入排查 Hook 配置时才打开。
日志页功能
- 级别筛选 — 按 ERROR / INFO / DEBUG 过滤
- 搜索 — 按包名、进程、Hook 类别、正文、堆栈全文搜索
- 异常展开 — 完整查看异常堆栈
- 诊断导出 — 一键导出 Guise 完整诊断信息给开发者
日志投递机制
目标进程 → 只在有事件时 → 获取当前 Application → 批量投递 → Guise 数据库
关闭详细日志且没有事件时,Guise 不查找目标应用 Context、不排队重试、不发送广播。不为了日志功能留下多余的 Hook。