HarmonyOS鸿蒙Next中日志打印的话用那个多一些?遇到日志打印个全怎么办?

HarmonyOS鸿蒙Next中日志打印的话用那个多一些?遇到日志打印个全怎么办? 鸿蒙中日志打印的话用那个多一些?遇到日志打印个全怎么办?

4 回复

【背景知识】 hilog与console都是系统提供的日志打印接口,console是基于hilog的封装,推荐使用hilog打印日志。 hilog使用参考:使用HiLog打印日志

【问题定位】 hilog单次最多打印4096字节,超出限制文本将被截断。

【修改建议】 利用hilog封装log工具类检查日志长度,超出长度就分段打印。 代码示例如下:

import hilog from '@ohos.hilog';

class LogUtil {
  private static instance: LogUtil;
  private static DOMAIN: number = 0x0000

  private constructor() {
    // 私有构造函数,防止外部实例化
  }

  public static getInstance(): LogUtil {
    if (!LogUtil.instance) {
      LogUtil.instance = new LogUtil();
    }
    return LogUtil.instance;
  }

  // error、debug参照info即可
  public info(logTag: string, content: string) {
    const maxSize = 1024
    if (content.length <= maxSize) {
      // 长度小于等于限制直接打印
    } else {
      while (content.length > maxSize) {
        //循环分段打印
        let logContent = content.substring(0, maxSize)
        content = content.replace(logContent, "")
        hilog.info(LogUtil.DOMAIN, logTag, '%{public}s', logContent)
        // 打印剩余日志
      }
    }
    hilog.info(LogUtil.DOMAIN, logTag, '%{public}s', content)
  }
}

export default LogUtil

更多关于HarmonyOS鸿蒙Next中日志打印的话用那个多一些?遇到日志打印个全怎么办?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


参考

  • console.log是对hilog日志系统的封装,其采用默认参数,console.log的日志业务领域、日志TAG、日志级别是固定的,其中,日志业务领域为‘A0c0d0’,日志TAG为‘JSApp’,日志级别为info。
  • hilog日志在打印的时候,会包含4部分内容:日志业务领域、日志TAG、日志级别、日志内容,可以自定义设置日志业务领域、日志TAG、日志级别。
  • console主要用于应用开发调试阶段。
  • 推荐使用hilog,可以对日志系统进行分类和统一处理,使用console.log打印日志,则不方便日志定位。

鸿蒙Next中推荐使用hilog模块进行日志打印,这是鸿蒙官方提供的日志接口。若遇到日志打印不全,可通过hilog.isLoggable检查日志级别,或使用hilog.debughilog.info等分级方法控制输出量。

在HarmonyOS Next开发中,推荐使用HiLog作为主要的日志打印工具,它是鸿蒙系统提供的标准日志接口,支持分级(DEBUG、INFO、WARN、ERROR等)和标签过滤,便于调试和问题排查。若遇到日志打印过多的问题,可通过以下方式优化:

  1. 调整日志级别:在开发或测试阶段使用DEBUGINFO级别,发布时调整为WARNERROR,减少冗余输出。
  2. 使用标签过滤:通过HiLogLabel为日志分类,运行时可通过设备调试工具(如DevEco Studio的Logcat)按标签筛选关键信息。
  3. 控制日志频率:避免在循环或高频操作中打印日志,可通过条件判断限制输出。
  4. 日志开关配置:通过全局变量或配置文件动态控制日志是否启用,例如预发布环境关闭部分日志。

若需全面日志分析,建议结合DevEco Studio的调试工具实时查看和过滤,或导出日志文件后使用脚本工具(如grep)进一步处理。

回到顶部