鸿蒙中的日志库-Logger

鸿蒙中的Logger

Logger

灵感来源 - Android logger

HarmonyOS使用的日志库,具备轻量、美观强大、可扩展的特性,日志写入文件。使用API 12,点击可以跳转到源文件

上图

在这里插入图片描述

打印Error或者BusinessError

在这里插入图片描述

写入文件

因为按行写的一条日志,里面可能有换行符,所以把换行符都替换成‘-----’这个了
在这里插入图片描述

快速开始

安装

ohpm install @nzy/logger

导入

import { Logger } from '@nzy/logger';

打印日志

Logger.debug('hello world')
Logger.info(new Person())
Logger.warn(new Person())
Logger.error('这是一个error')
Logger.fatal('这是一个fatal')
Logger.json(new Person())

全局初始化

如果需要写入文件功能,请尽早初始化

// 也可以不用初始化
Logger.init();
// 或者传递过去,如果要是写入文件 jsonWrite = true ,必须传递parentPath,必须传递 FileStrategy
Logger.init({
  domain: 0x0000, // domain
  isEnable: true, // 是否打印,默认是 true,是否打印,不影响写文件
  isShowFile: true, // 是否显示打印日志文件的位置 默认 true
  tag: 'MyTag', // 全局TAG 默认是 Logger
  jsonWrite: true, // 是否写入文件 默认是 true
  debugLevelWrite: true, // debug级别的是否写入文件 默认是 true
  parentPath: parentPath // 写入文件的 parent 路径
},
  new FileStrategy(`${Date.now()}.txt`)// 要写入文件策略模式,自己也可以去实现
)

LogOptions

属性默认值描述
domain0x0000Hilog的domain
isEnabletrue是否打印,不影响写文件
isShowFiletrue是否显示打印的文件以及行号
tagLogger全局TAG
jsonWritetrue是否写入文件,必须传递FileStrategy才能真正写入
parentPath写入文件的 parent 路径,方便当有多个日志文件的时候,全部捞出来,如果要写入 必须传

设置新的FileStrategy

当设置新的FileStrategy的时候,日志会写入新的文件,并且返回旧文件的全路径,可以拿这个旧文件上传到服务器,上传成功请删除旧文件

let oldFilePath = Logger.setNewFile(new FileStrategy(`${Date.now()}.txt`))
// 可以把这个上传到服务器
if (oldFilePath && fs.accessSync(oldFilePath)) {
  // 存在 上传给服务器
  // 删除此文件
  // fs.unlinkSync(oldFilePath)
  console.log('上传服务器,并且删除此文件')
}

拿到所有的日志文件

在全局初始化的时候,有个parentPath,当冷启动的时候,可以拿到所有这个文件夹下的所有日志,上传给服务器,并且删除

let parentPath = getContext(this).getApplicationContext().filesDir
// 当启动起来的时候
// 去拿parentPath下面所有的文件,然后上传上去
// 这里面有可能是多个文件
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 ,真机也会丢失

 for(let index = 0; index<1000;index++){
      console.log(`----${index}-----`)
    }

贡献代码

使用过程中发现任何问题都可以提 Issue
给我们,当然,我们也非常欢迎你给我们发 PR

开源协议

本项目基于 Apache License 2.0 ,请自由地享受和参与开源。

源码Gitee

OpenHarmony三方库中心仓

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ngx-logger 是一个用于 Angular 应用程序的日志记录。它提供了一个简单的 API,可以在应用程序记录各种级别的日志消息,包括调试、信息、警告和错误。ngx-logger 还支持将日志消息发送到不同的目标,如控制台、服务器或远程日志记录服务。 使用 ngx-logger,你可以轻松地添加日志记录功能到你的 Angular 应用程序。它提供了一些有用的功能,如日志消息格式化、日志级别过滤和自定义日志处理器。此外,它还支持在开发模式下自动启用日志记录,并在生产模式下进行优化以提高性能。 要开始使用 ngx-logger,你需要先安装它并添加相应的配置。然后,在你的组件或服务引入并使用 Logger服务来记录日志消息。你可以选择性地设置日志级别、自定义日志格式和处理器。 以下是一个示例,展示了如何在 Angular 使用 ngx-logger: 1. 首先,安装 ngx-logger: ``` npm install ngx-logger ``` 2. 在你的应用程序的模块导入 LoggerModule 并配置: ```typescript import { NgModule } from '@angular/core'; import { LoggerModule, NgxLoggerLevel } from 'ngx-logger'; @NgModule({ imports: [ LoggerModule.forRoot({ level: NgxLoggerLevel.DEBUG }) ] }) export class AppModule { } ``` 在这个示例,我们将日志级别设置为调试模式。 3. 在你的组件或服务使用 Logger服务来记录日志消息: ```typescript import { Component } from '@angular/core'; import { Logger } from 'ngx-logger'; @Component({ selector: 'app-example', template: ` <button (click)="logDebug()">Log Debug Message</button> ` }) export class ExampleComponent { constructor(private logger: Logger) { } logDebug() { this.logger.debug('This is a debug message.'); } } ``` 在这个示例,我们在按钮点击事件记录了一个调试级别的日志消息。 这只是一个简单的示例,你可以根据你的需求在应用程序使用 ngx-logger 记录不同级别的日志消息。你可以参考 ngx-logger 的文档以获取更多详细信息和示例代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值