HarmonyOS 鸿蒙Next中屏蔽打印所有日志
HarmonyOS 鸿蒙Next中屏蔽打印所有日志 最近要打包给第三方检测,是不是打release的包,他们就没办法抓到敏感日志(用户信息相关),还是说代码要怎么设置一下呢?有没有知道的朋友
背景知识:
在应用开发过程中,可在关键代码处输出日志信息。在运行应用后,通过查看日志信息来分析应用执行情况(如应用是否正常运行、代码运行时序、运行逻辑分支是否正常等),系统提供不同的API供开发者调用并输出日志信息,即HiLog与console。日志在打印的时候,会包含4部分内容:domaid、tag、日志级别、日志内容,hilog可以设置domaid、tag、日志级别,但是console.log的domaid、tag、日志级别是固定的。
其中比较重要的参数是日志级别(DIWEF),分别有以下几种:
- DEBUG(3):详细的流程记录,通过该级别的日志可以更详细地分析业务流程和定位分析问题。
- INFO(4):用于记录业务关键流程节点,可以还原业务的主要运行过程;用于记录可预料的非正常情况信息,如无网络信号、登录失败等。这些日志都应该由该业务内处于支配地位的模块来记录,避免在多个被调用的模块或低级函数中重复记录。
- WARN(5):用于记录较为严重的非预期情况,但是对用户影响不大,应用可以自动恢复或通过简单的操作就可以恢复的问题。
- ERROR(6):应用发生了错误,该错误会影响功能的正常运行或用户的正常使用,可以恢复但恢复代价较高,如重置数据等。
- FATAL(7):重大致命异常,表明应用即将崩溃,故障无法恢复。
解决方案:
DEBUG级别的日志在正式发布版本中默认不被打印,只有在调试版本或打开调试开关的情况下才会打印。
- 使用console
使用console.debug等级的日志输出,即可在发布版本中屏蔽打印。
使用console.info及以上等级的日志输出,即可在发布版本中打印。
- 使用HiLog
使用hilog.debug等级的日志输出,即可在发布版本中屏蔽打印。
使用hilog.info及以上等级的日志输出,即可在发布版本中打印。
可以同时使用hilog.setMinLogLevel设置应用日志打印的最低日志级别(对console也生效),进程在打印日志时,需要同时校验该日志级别和全局日志级别,示例代码如下:
// 设置应用日志打印最低日志级别为WARN
hilog.setMinLogLevel(hilog.LogLevel.WARN);
console.info('info:', '4'); // 日志等级低于WARN,不被打印
console.warn('error:', '5'); // 日志等级等于WARN,正常打印
hilog.info(0x0001, "info", "Log level =", "4"); // 日志等级低于WARN,不被打印
hilog.warn(0x0001, "warn", "Log level =", "5"); // 日志等级等于WARN,正常打印
总结:
- console是对hilog日志系统的封装,其采用默认参数,主要用于应用开发调试阶段。推荐使用hilog,可以对日志系统进行分类和统一处理,具体参考文档:hilog日志系统
- DEBUG级别的日志在正式发布版本中默认不被打印,可以使用DEBUG级别日志打印。
- hilog.setMinLogLevel()可以设置应用日志打印的最低日志级别,屏蔽对应级别日志。
更多关于HarmonyOS 鸿蒙Next中屏蔽打印所有日志的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
你好
首先release包,是不会开启日志,对方也看不到你代码功能的日志。
不过一般而言,是对log日志进行封装工具类。添加开关等自定义逻辑,方便管理。
在HarmonyOS(鸿蒙Next)中,可以通过修改日志级别来屏蔽所有日志输出。具体操作如下:
- 修改日志级别:在开发过程中,可以在
config.json
文件中设置日志级别为OFF
,这将关闭所有日志输出。
{
"log": {
"level": "OFF"
}
}
- 使用代码控制:在代码中,可以通过
HiLog
API动态设置日志级别,例如:
HiLog.setLevel(HiLog.LOG_OFF);
- 发布版本:在发布正式版本时,默认日志级别通常为
ERROR
或OFF
,确保生产环境中不输出调试日志。
通过这些方法,可以有效屏蔽所有日志输出,提升应用性能和安全性。