HarmonyOS应用实战-启示散页-99-发布前日志别靠人工删:用 ReleaseLogAudit 检查白名单
HarmonyOS 应用实战 99发布前日志别靠人工删用 ReleaseLogAudit 检查白名单本地工具类应用也会处理用户内容提问、答案、收藏、导入文本、题库名称。调试阶段为了排查方便很容易顺手把对象、错误、参数整段打进hilog。等到发布前再靠人工搜索删除风险很高因为日志分散在 entry、HSP 页面、服务和 HAR 仓储里。“答案之书”当前工程的日志多数已经比较克制比如首页只记录deckId和问题长度抽取服务只记录题库 id、索引和数量。但发布前仍需要一张明确白名单哪些字段能打哪些字段不能打扫描命令怎么跑发现异常后改哪里。当前日志分布不是一个文件能看完先用命令看全项目日志rg-nhilog\\.(info|warn|error|debug)D:\ProgramData\huawei\lesson\The_Book_of_Answers\entry\src\main\etsD:\ProgramData\huawei\lesson\The_Book_of_Answers\libraryHSP\src\main\etsD:\ProgramData\huawei\lesson\The_Book_of_Answers\libraryHAR\src\main\ets当前能看到的典型位置包括层级文件日志类型entryEntryAbility.ets生命周期、启动失败entryIndex.ets提交入口、问题长度entrySeedLoader.ets默认题库播种、恢复原因HSP 服务AnswerPickService.ets抽取题库、索引、总数HSP 服务DeckService.ets保存、重命名、删除题库 idHAR 仓储PreferencesStore.ets偏好读写失败这说明发布前不能只检查一个服务文件。真正要做的是把日志调用当成一类交付项统一审计。当前做得对的地方记录长度和计数首页提交问题时没有打印问题正文consttrimmed:stringthis.question.trim();constparams:DrawingParams{deckId:this.currentDeckId,question:trimmed||undefined};hilog.info(DOMAIN,TAG,submit deck%{public}s qLen%{public}d,params.deckId,trimmed.length);抽取服务也没有打印答案正文constidx:numberpickIndexExcluding(deck.answers.length,excludeIndex);constans:Answerdeck.answers[idx];hilog.info(DOMAIN,TAG,pick deck%{public}s idx%{public}d/%{public}d,deckId,idx,deck.answers.length);returnans;这两处是很好的边界可以记录deckId、长度、索引、数量不能记录question原文和answer.text。文章要把这种边界写成规则而不是依赖开发者每次都自觉。风险点错误对象和 JSON.stringify日志里仍有需要关注的模式比如hilog.error(DOMAIN,testTag,Failed to set colorMode. Cause: %{public}s,JSON.stringify(err));JSON.stringify(err)不一定包含用户内容但它是一个风险形态一旦错误对象里携带业务参数就会把字段整体打出去。发布前审计时应该把JSON.stringify、raw、text、question、answers、import这类关键词单独扫出来。白名单先定义清楚建议把日志字段分成三类类别可以记录不要记录标识deckId、favoriteId、错误分类完整题库对象计数qLen、answerCount、idx/total答案正文状态seedVersion、schemaVersion、路径阶段导入原文错误受控错误码、简短原因整个 payload 或 JSON 文本这张白名单不只是安全要求也能提升排障效率。日志里出现“题库保存失败count1”比出现一整段答案文本更容易判断问题且不会泄露用户内容。用 SafeLog 封住业务日志可以先从业务层开始封装不必一次替换所有系统生命周期日志typeSafeLogValuestring|number|boolean;classSafeLog{staticinfo(tag:string,event:string,fields:Recordstring,SafeLogValue):void{constmessage:stringObject.keys(fields).sort().map((key:string):string${key}${fields[key]}).join( );hilog.info(DOMAIN,tag,%{public}s %{public}s,event,message);}}业务代码调用时只传白名单字段SafeLog.info(TAG,answer.pick,{deckId,index:idx,total:deck.answers.length});不要提供any或对象直传接口。日志封装越方便传大对象越容易在调试时把正文塞进去。发布前脚本扫敏感词不需要等到审查时才人工翻代码可以先准备一组rg命令rg-nhilog\\.(info|warn|error|debug)D:\ProgramData\huawei\lesson\The_Book_of_Answers\entry\src\main\etsD:\ProgramData\huawei\lesson\The_Book_of_Answers\libraryHSP\src\main\etsD:\ProgramData\huawei\lesson\The_Book_of_Answers\libraryHAR\src\main\etsrg-nhilog\\..*(text|question|raw|answers|JSON\\.stringify|payload|import)D:\ProgramData\huawei\lesson\The_Book_of_Answers\entry\src\main\etsD:\ProgramData\huawei\lesson\The_Book_of_Answers\libraryHSP\src\main\etsD:\ProgramData\huawei\lesson\The_Book_of_Answers\libraryHAR\src\main\ets第一条命令列出所有日志点第二条命令只抓高风险字段。命中不一定就是错误但必须人工确认。把当前日志归类当前工程可以先按下面方式判断日志判断说明submit deck qLen保留只记录题库 id 和问题长度pick deck idx/total保留没有答案正文save deck id count保留没有题库名和答案文本add favorite total保留只记录数量JSON.stringify(err)复核错误对象来源要确认onRestore bundleVersion复核可以记录版本但不要扩展成备份体这个归类可以放进发布前清单。每次新增日志先问它属于哪一类再决定能否合入。调试日志要有构建开关有些问题确实需要在本地看正文比如导入解析失败时看原始片段。但这类日志只能放在调试构建下constRELEASE_LOG:booleantrue;functiondebugOnlyUserText(tag:string,text:string):void{if(RELEASE_LOG){return;}hilog.debug(DOMAIN,tag,debug text%{public}s,text);}真实工程里RELEASE_LOG应该从构建模式或编译常量读取而不是手写常量。这里的重点是原则正式包日志路径不能接收用户正文。验证路径发布前至少跑三类验证验证命令或操作期望静态扫描rg hilog\\.日志点全列出敏感字段扫描rg textquestion交互抽样提问、导入、收藏、恢复后抓日志不出现问题正文、答案正文、导入全文如果这篇只是文章改写不要写成“发布包已完成审计”。真正的审计要在工程代码和设备日志上完成。常见问题日志排查要避免两个极端一个是把用户正文全打出来另一个是删到只剩“失败”。可维护的做法是在日志里保留阶段、owner、id、计数和错误分类同时把问题正文、答案正文、导入原文挡在发布包之外。现象原因修复正式日志出现用户问题直接打印question改成qLen日志出现完整答案打印Answer对象只记answerId或索引导入失败日志很长打印 raw import只记长度和错误分类错误日志无法判断删除过度只剩“失败”保留 owner、阶段、计数收口第 99 篇的核心是把日志当成交付边界而不是发布前手工删几行。当前工程已经有一些正确做法记录长度、计数、id不记录正文。后续要补的是 SafeLog 封装、敏感字段扫描和发布前抽样让日志既能排障又不带出用户内容。最小闭环可以先从两件事开始所有新增业务日志必须写清楚白名单字段发布前固定跑一次rg敏感字段扫描。等这两项稳定后再把常见事件收进SafeLog。这样日志不是被动清理而是在编码阶段就被限制在可发布的字段范围内。

相关新闻

Fuzzy Finder实现原理:Jane Street Workshop中的字符串匹配与用户输入处理

Fuzzy Finder实现原理:Jane Street Workshop中的字符串匹配与用户输入处理

Fuzzy Finder实现原理:Jane Street Workshop中的字符串匹配与用户输入处理 【免费下载链接】learn-ocaml-workshop Exercises and projects for Jane Streets OCaml Workshop 项目地址: https://gitcode.com/gh_mirrors/le/learn-ocaml-workshop 在OCaml编程…

2026/8/18 9:27:41 阅读更多 →
从源码到部署:flink-on-k8s-operator开发者指南与贡献实践

从源码到部署:flink-on-k8s-operator开发者指南与贡献实践

从源码到部署:flink-on-k8s-operator开发者指南与贡献实践 【免费下载链接】flink-on-k8s-operator [DEPRECATED] Kubernetes operator for managing the lifecycle of Apache Flink and Beam applications. 项目地址: https://gitcode.com/gh_mirrors/fli/flink-…

2026/8/15 18:45:49 阅读更多 →
零成本智能视频制作完整指南:手把手用 OpenMontage 做出第一支真实视频

零成本智能视频制作完整指南:手把手用 OpenMontage 做出第一支真实视频

零成本智能视频制作完整指南:手把手用 OpenMontage 做出第一支真实视频 【免费下载链接】OpenMontage Worlds first open-source, agentic video production system. 12 production pipelines, 100 tools, 700 agent skill and production-knowledge files. Turn yo…

2026/8/18 7:48:53 阅读更多 →

最新新闻

计算机单片机毕设实战-基于 STM32 单片机的智能学习座椅监测控制系统设计 基于 STM32 的坐姿提醒、人体检测与灯光智能调控装置开发(018403)

计算机单片机毕设实战-基于 STM32 单片机的智能学习座椅监测控制系统设计 基于 STM32 的坐姿提醒、人体检测与灯光智能调控装置开发(018403)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/8/18 9:27:51 阅读更多 →
网络安全高薪真相:从SRC挖洞到企业安全岗位的实战成长路径

网络安全高薪真相:从SRC挖洞到企业安全岗位的实战成长路径

最近几年,网络安全这个赛道,热度高得有点烫手。无论是“白帽子”挖洞月入数万的传说,还是各类培训机构“零基础转行,挑战年薪百万”的广告,都让很多人觉得,只要一脚踏进网安,就等于踏上了财富快…

2026/8/18 9:27:51 阅读更多 →
计算机单片机毕设实战-基于 STM32 或 51 单片机的可调阈值红外测距预警装置设计 基于单片机的红外测距数据采集与手机蓝牙交互系统设计(020103)

计算机单片机毕设实战-基于 STM32 或 51 单片机的可调阈值红外测距预警装置设计 基于单片机的红外测距数据采集与手机蓝牙交互系统设计(020103)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/8/18 9:27:51 阅读更多 →
多智能体系统合谋攻击防御:GroupGuard框架原理与工程实践

多智能体系统合谋攻击防御:GroupGuard框架原理与工程实践

1. 项目概述:当多智能体开始“抱团作弊”在分布式人工智能和自动化决策系统里,多智能体系统(Multi-Agent Systems, MAS)正变得越来越普遍。从自动驾驶车队的协同调度,到电商平台的推荐算法博弈,再到金融市场…

2026/8/18 9:27:51 阅读更多 →
层理论统一多智能体系统:从共识到纳什均衡的数学框架与实践

层理论统一多智能体系统:从共识到纳什均衡的数学框架与实践

1. 项目概述:从“共识”到“均衡”的数学桥梁 最近在梳理多智能体系统(Multi-Agent Systems, MAS)的理论框架时,我反复琢磨一个核心问题:我们如何用一个统一的数学工具,既描述智能体之间为了共同目标而协作…

2026/8/18 9:27:51 阅读更多 →
SAM2视频物体跟踪与分割:原理、应用与工程实践深度解析

SAM2视频物体跟踪与分割:原理、应用与工程实践深度解析

上周在测试一个视频处理项目时,我遇到了一个经典难题:如何让模型在视频里稳定地“记住”并跟踪一个物体。比如,我想把一段家庭录像里跑来跑去的小狗精准地抠出来,换一个背景。传统方法要么需要我手动在几十上百帧里反复框选&#…

2026/8/18 9:26:51 阅读更多 →

日新闻

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 如果你还停留在"看网课 不停暂停 截图 …

2026/8/18 0:00:57 阅读更多 →
思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 你是不是也经历过这种时刻:设计稿里…

2026/8/18 0:00:58 阅读更多 →
华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, …

2026/8/18 0:00:59 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/18 9:15:35 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/18 9:06:28 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/18 9:04:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/17 18:54:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/17 18:55:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/17 18:55:55 阅读更多 →