HarmonyOS鸿蒙Next中开发阶段脱机使用console.log输出的日志在联机后是否可以导出

HarmonyOS鸿蒙Next中开发阶段脱机使用console.log输出的日志在联机后是否可以导出 想了解一下,在开发阶段,脱机阶段使用console.log输出的日志,在联机后是否可以导出。

比如研发人员写的log,QA同学测试,之后查看log,应该如何查看。

如果不可以,是否有其它的方法?

7 回复

你好,设备中的日志位于 data/log/hilog,可以连接设备后使用设备文件浏览器查看。

选择指定的日志可以另存为,或者使用命令 hdc file recv 将日志文件导出。导出后的日志无法直接解压查看,需要使用 hilogtool 工具进行解析,将转换为明文hilog日志。

参考自动化脚本,直接导出和完成解析。

备注:console.log是对hilog日志系统的封装,采用默认参数。

cke_822.png

更多关于HarmonyOS鸿蒙Next中开发阶段脱机使用console.log输出的日志在联机后是否可以导出的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


一、基础适配方案

  • 获取系统避让区域信息
    • 使用 getSystemInfoSync 获取状态栏和导航栏高度:
let res = has.getSystemInfoSync();
console.info(`状态栏高度: ${res.statusBarHeight}, 导航栏高度: ${res.indicatorHeight}`);
  • 根据高度手动设置组件 padding 或 margin 避开安全区域。
  • 通过 env() 函数动态适配
.container {
  padding-top: env(safe-area-inset-top);    /* 顶部安全区距离 */
  padding-bottom: env(safe-area-inset-bottom); /* 底部安全区距离 */
}

二、组件级安全区域扩展

使用 expandSafeArea 属性将组件绘制区域扩展到安全区外,适用于背景延伸但内容需避让的场景:

Column() {
  // 子组件在安全区域内布局
}
.backgroundColor('#F1F3F5')
.expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP, SafeAreaEdge.BOTTOM])  // 扩展至状态栏和导航栏
  • 适用场景:

需要顶部图片/背景延伸到状态栏,但交互按钮需避让(如搜索结果4的导航栏适配)。

三、窗口全屏模式适配

  • 设置窗口全屏
import { window } from '@kit.ArkUI';
window.getLastWindow(this.context).setWindowLayoutFullScreen(true);  // 全屏布局
  • 效果:页面所有组件布局范围扩展至整个窗口,需手动设置 padding 避让状态栏和导航栏2。
  • 获取避让区域动态调整
let avoidArea = window.getWindowAvoidArea(window.AvoidAreaType.TYPE_SYSTEM);  // 获取系统避让区域
this.paddingValue = avoidArea.topRect.height + 'px';  // 动态设置组件padding

四、折叠屏/挖孔屏适配

  • 获取挖孔区域信息
import { display } from '@kit.ArkUI';
let cutoutInfo = display.getCutoutInfo();  // 获取挖孔区域宽高和位置
  • 根据返回的 boundingRect 设置组件 margin 或 padding 避让。
  • 动态响应屏幕形态变化
    • 监听屏幕折叠状态事件,动态调整布局:
display.on('foldStatusChange', (foldStatus) => {
  if (foldStatus === display.FoldStatus.FOLD_STATUS_EXPANDED) {
    // 展开大屏时的布局调整
  }
});

五、场景化适配建议

场景 推荐方案 关键代码
顶部背景延伸 expandSafeArea + clip:false .expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP])
滚动列表底部延伸 env(safe-area-inset-bottom) padding-bottom: env(safe-area-inset-bottom)
全屏沉浸式(如游戏) 窗口全屏模式 setWindowLayoutFullScreen(true)
深色模式状态栏适配 设置系统栏样式 window.setWindowSystemBarProperties({ statusBarColor: ‘#000’ })

解决方案:
可以考虑使用“@free/log”这个库。

这个库不用连电脑也能查看日志的。
看日志的方式:摇晃手机会自动打开日志页面,页面展示所有捕获的 console日志(含 log、error等类型)。

console.log 主要用于本地调试时的控制台输出,其日志默认不会被持久化到设备中。当设备切换为联机状态(如多机联动场景)时,这些日志无法通过常规手段(如系统日志工具)导出。

建议改用鸿蒙系统提供的 HiLog 接口记录日志,其支持持久化存储和导出

运行命令:hilog -w start -f ckTest -l 1M -n 5 -m zlib -j 11

文件保存在目录:/data/log/hilog/

参数解释:

-w 开启日志落盘任务,start表示开始,stop表示停止。
-f 设置日志文件名
-l 设置单个日志文件大小,单位可以是:B/K/M/G
-n 设置最大日志文件编号,当文件计数超过此编号时,日志文件旋转。范围:[2,1000]
-m 设置日志文件压缩算法
-j 任务ID,范围:[10,0xffffffffff)
更多参数含义请使用hilog --help查看。

使用hilog命令行工具来过滤保留当前应用的日志:

hilog -T xxx 按tag过滤; 
hilog –D xxx 按domain过滤; 
hilog -e 对日志内容匹配,支持正则表达式。支持tag, domain, pid等多重过滤,组合过滤以及反向过滤;

console.log是对hilog日志系统的封装,采用默认参数。日志业务领域为A0c0d0,日志TAG为JSApp,日志级别为info。

hilog日志打印时包含四部分:日志业务领域、日志TAG、日志级别和日志内容。开发者可以自定义设置日志业务领域、日志TAG和日志级别。

console主要用于应用开发的调试阶段。

推荐使用hilog对日志系统进行分类和统一处理。使用console.log打印日志,不方便日志定位。

更多关于hilog的内容详见开发文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-hilog

在HarmonyOS Next中,开发阶段脱机使用console.log输出的日志在联机后无法直接导出。这些日志仅存储在设备本地,主要用于实时调试,不会自动同步到开发工具或云端。若需导出脱机日志,需在设备联机后通过开发工具(如DevEco Studio)的日志捕获功能手动抓取设备上的实时日志,但无法获取脱机期间的历史console.log记录。

在HarmonyOS Next开发中,脱机运行时通过console.log输出的日志,在设备重新联机后无法直接导出。这是因为这些日志默认仅输出到运行时控制台(如DevEco Studio的Run窗口),属于临时性输出,并未持久化存储到设备文件中。

对于你提到的研发与QA协作查看日志的场景,建议采用以下方法:

  1. 使用hilog系统日志(推荐)

    • 在代码中调用hilog API(如hilog.info())写入日志。系统日志会被持久化存储到设备的/data/log/目录下。
    • 联机后,可通过以下方式导出:
      • 使用DevEco Studio的Device Manager:直接查看或导出日志文件。
      • 使用hdc命令:通过hdc file recv /data/log/ .命令将日志拉取到本地。
      • 在设备上手动备份:如果设备文件管理器可见,可直接复制。
  2. 自定义日志文件

    • 在应用内将日志写入到应用沙箱路径(如context.filesDir)下的自定义文件中。
    • 联机后通过hdc或文件管理器从沙箱目录拉取该文件。
  3. 实时日志捕获(联机调试时)

    • 在QA测试时,保持设备与DevEco Studio连接,直接从Run或Log窗口查看实时日志。
    • 或使用hdc shell hilog命令在终端实时查看。

总结:直接使用console.log无法满足脱机日志导出需求。应切换至hilog系统日志或自定义文件日志方案,以实现日志的持久化,便于后续联机导出和查看。

回到顶部