鸿蒙中的日志库-Logger

[复制链接]
发表于 2025-11-17 19:47:16 | 显示全部楼层 |阅读模式
鸿蒙中的Logger

Logger

灵感泉源 - Android logger
HarmonyOS使用的日志日志库,具备轻量、雅观强盛、可扩展的特性,日志日志写入文件。使用API 12,点击可以跳转到源文件
上图


打印Error大概BusinessError


写入文件

由于按行写的一条日志日志,内里大概有换行符,以是把换行符都更换成‘-----’这个了

快速开始

安装

  1. ohpm install @nzy/logger
复制代码
导入

  1. import { Logger } from '@nzy/logger';
复制代码
打印日志

  1. Logger.debug('hello world')
  2. Logger.info(new Person())
  3. Logger.warn(new Person())
  4. Logger.error('这是一个error')
  5. Logger.fatal('这是一个fatal')
  6. Logger.json(new Person())
复制代码
全局初始化

如果必要写入文件功能,请尽早初始化
  1. // 也可以不用初始化
  2. Logger.init();
  3. // 或者传递过去,如果要是写入文件 jsonWrite = true ,必须传递parentPath,必须传递 FileStrategy
  4. Logger.init({
  5.   domain: 0x0000, // domain
  6.   isEnable: true, // 是否打印,默认是 true,是否打印,不影响写文件
  7.   isShowFile: true, // 是否显示打印日志文件的位置 默认 true
  8.   tag: 'MyTag', // 全局TAG 默认是 Logger
  9.   jsonWrite: true, // 是否写入文件 默认是 true
  10.   debugLevelWrite: true, // debug级别的是否写入文件 默认是 true
  11.   parentPath: parentPath // 写入文件的 parent 路径
  12. },
  13.   new FileStrategy(`${Date.now()}.txt`)// 要写入文件策略模式,自己也可以去实现
  14. )
复制代码
LogOptions

属性默认值形貌domain0x0000Hilog的domainisEnabletrue是否打印,不影响写文件isShowFiletrue是否表现打印的文件以及行号tagLogger全局TAGjsonWritetrue是否写入文件,必须转达FileStrategy才华真正写入parentPath无写入文件的 parent 路径,方便当有多个日志文件的时间,全部捞出来,如果要写入 必须传设置新的FileStrategy

当设置新的FileStrategy的时间,日志会写入新的文件,而且返回旧文件的全路径,可以拿这个旧文件上传到服务器,上传乐成请删除旧文件
  1. let oldFilePath = Logger.setNewFile(new FileStrategy(`${Date.now()}.txt`))
  2. // 可以把这个上传到服务器
  3. if (oldFilePath && fs.accessSync(oldFilePath)) {
  4.   // 存在 上传给服务器
  5.   // 删除此文件
  6.   // fs.unlinkSync(oldFilePath)
  7.   console.log('上传服务器,并且删除此文件')
  8. }
复制代码
拿到全部的日志文件

在全局初始化的时间,有个parentPath,当冷启动的时间,可以拿到全部这个文件夹下的全部日志,上传给服务器,而且删除
  1. let parentPath = getContext(this).getApplicationContext().filesDir
  2. // 当启动起来的时候
  3. // 去拿parentPath下面所有的文件,然后上传上去
  4. // 这里面有可能是多个文件
  5. let files: string[] = fs.listFileSync(parentPath)
复制代码
注意点

跳转到源文件

由于 DevEco Studio 只能在error和warn的情况下才华跳转源文件,以是必要 DevEco Studio
安装一个插件 awesome-console,而且在 DevEco Studio 中
Marketplace 搜不到,以是必要从 awesome-console 手动安装
打印丢失

如果打印过大的Json,在模拟器上有大概丢失,在真机上不会丢失(但是好比循环10000次打印 ,在真机上也会丢失),HiLog和console属于DevEco
Studio 的bug
好比 如许就 在模拟器中就会丢失,在真机就不会丢失,如果index < 10000 ,真机也会丢失
  1. for(let index = 0; index<1000;index++){
  2.       console.log(`----${index}-----`)
  3.     }
复制代码
贡献代码

使用过程中发现任何题目都可以提 Issue。
给我们,固然,我们也非常接待你给我们发 PR 。
开源协议

本项目基于 Apache License 2.0 ,请自由地享受和加入开源。
源码Gitee

OpenHarmony三方库中央仓


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表