HarmonyOS 鸿蒙Next中屏蔽打印所有日志

HarmonyOS 鸿蒙Next中屏蔽打印所有日志 最近要打包给第三方检测,是不是打release的包,他们就没办法抓到敏感日志(用户信息相关),还是说代码要怎么设置一下呢?有没有知道的朋友

3 回复

背景知识:

在应用开发过程中,可在关键代码处输出日志信息。在运行应用后,通过查看日志信息来分析应用执行情况(如应用是否正常运行、代码运行时序、运行逻辑分支是否正常等),系统提供不同的API供开发者调用并输出日志信息,即HiLogconsole。日志在打印的时候,会包含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,正常打印

总结:

  1. console是对hilog日志系统的封装,其采用默认参数,主要用于应用开发调试阶段。推荐使用hilog,可以对日志系统进行分类和统一处理,具体参考文档:hilog日志系统
  2. DEBUG级别的日志在正式发布版本中默认不被打印,可以使用DEBUG级别日志打印。
  3. hilog.setMinLogLevel()可以设置应用日志打印的最低日志级别,屏蔽对应级别日志。

更多关于HarmonyOS 鸿蒙Next中屏蔽打印所有日志的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


你好

首先release包,是不会开启日志,对方也看不到你代码功能的日志。

不过一般而言,是对log日志进行封装工具类。添加开关等自定义逻辑,方便管理。

在HarmonyOS(鸿蒙Next)中,可以通过修改日志级别来屏蔽所有日志输出。具体操作如下:

  1. 修改日志级别:在开发过程中,可以在config.json文件中设置日志级别为OFF,这将关闭所有日志输出。
{
  "log": {
    "level": "OFF"
  }
}
  1. 使用代码控制:在代码中,可以通过HiLog API动态设置日志级别,例如:
HiLog.setLevel(HiLog.LOG_OFF);
  1. 发布版本:在发布正式版本时,默认日志级别通常为ERROROFF,确保生产环境中不输出调试日志。

通过这些方法,可以有效屏蔽所有日志输出,提升应用性能和安全性。

回到顶部