Skip to content

Logan-ext是一个为OpenHarmony开发的日志库,基于美团技术团队的Logan进行鸿蒙化改造并进行拓展而来

License

Notifications You must be signed in to change notification settings

MoonlitDropOfBlood/logan-ext

Repository files navigation

Logan Library For HarmonyOS Extended Edition

简介

openHarmony

Logan是一个为OpenHarmony开发的日志库,基于美团技术团队的Logan 的1.2.12版本的Native 核心开发,并参考Android版本进行了一定程度的拓展。 装饰器部分和console拦截参考了log4a进行设计。对两个库的作者及贡献者,感谢!。

  • 支持多线程,可以在task和worker中使用
  • 支持console的拦截
  • 简洁易用的装饰器,快速打印方法的出参入参
  • 默认加密,防止日志明文保存导致泄露
  • 支持自定义日志格式

下载安装

ohpm install @duke/logan-ext

OpenHarmony ohpm 环境配置等更多内容,请参考如何安装 OpenHarmony ohpm 包

使用说明

基本用法

导入Logan库:

import { Logan, getDefaultConfig, LoggerManager, Logger } from '@duke/logan-ext';

初始化:需要在app启动时调用,仅能在主线程进行调用,setDebug和setOnLoganProtocolStatus为可选调用

let config = getDefaultConfig(context.cacheDir,
  context.filesDir, en.encodeInto("0123456789012345"),
  en.encodeInto("0123456789012345"));
Logan.setDebug(true)
let ff: OnLoganProtocolStatus =
  (cmd: string, code: number) => {
    console.log("cmd:" + cmd + " code:" + code)
  }

Logan.setOnLoganProtocolStatus(ff)
Logan.init(config);

日志打印并保存:(支持格式化)

LoggerManager.getLogger("Index" | object).debug("Test Log")

日志写入:(不会打印在控制台,也不支持格式化)

Logan.log(LogLogLevel.DEBUG, "Index", "Test Log")

日志强制写入:

Logan.flush()

装饰器

入参:

  • @LogCall :打印方法入参以类名为Tag
class Test {
  @LogCall
  test(a: string, b: number): number {
    return a + b
  }
}
  • @LogResult :打印方法返回值以类名为Tag
class Test {
  @LogResult
  test(a: string, b: number): number {
    return a + b
  }
}

日志上报

参考Logan的Android版本进行封装,功能和API基本一致

API 文档

Decorators

装饰器模块提供了便捷的日志记录方式,可以直接应用于类的方法上。

装饰器 描述
@LogCall 记录方法调用参数,会在方法执行前打印日志
@LogResult 记录方法执行结果,会在方法执行后打印返回值或异常信息
@LogTemplate 模板字符串日志,用于记录模板字符串的构建过程和参数信息

Logan

Logan是核心日志操作模块,提供了日志初始化、写入和刷新等基础功能。

方法名 入参 描述
init config: LoganConfig 初始化日志系统,需要在应用启动时调用
setDefaultType type: number 设置默认日志类型
log type: number, tag: string, msg: string 写入日志,支持不同日志级别
flush 强制将缓冲区的日志写入文件
setDebug isDebug: boolean 设置调试模式,开启后会输出更多调试信息
setOnLoganProtocolStatus callback: (cmd: string, code: number) => void 设置日志协议状态回调,用于监听日志操作结果
send dates: string[], task: SendLogTask 日志上报
sendFromDefault url: string, date:string,appId:string,unionId:string,deviceId:string,buildVersion:string,appVersion:string,sendLogCallback: (statusCode: number) => void 使用默认方法进行日志上报
sendFromDefaultWithHeader url: string, date:string,header:Map<string,string>,sendLogCallback: (statusCode: number)=>void 使用默认方法进行日志上报
getAllFilesInfo 获取所有日志文件信息

LoganConfig

方法名 入参 描述
getDefaultConfig cacheDir: string, fileDir: string, encryptKey16: Uint8Array, encryptIv16: Uint8Array 获取默认配置对象,用于初始化日志系统

Logger

Logger是日志记录器,提供了不同级别的日志记录方法。

方法名 入参 描述
debug format: string, ...args: Array<string | object | number> 记录调试级别日志
info format: string, ...args: Array<string | object | number> 记录信息级别日志
warn format: string, ...args: Array<string | object | number> 记录警告级别日志
error format: string, ...args: Array<string | object | number> 记录错误级别日志
fatal format: string, ...args: Array<string | object | number> 记录致命错误级别日志
log format: string, ...args: Array<string | object | number> 记录信息级别日志

LoggerManager

LoggerManager是日志管理器,用于获取和管理Logger实例。

方法名 入参 描述
setDefaultType type: number 设置默认日志类型
getLogger context: T | string,type:number 获取指定类或名称的Logger实例,type 为最终写入文件的type
interceptConsole 拦截console日志,将console输出重定向到Logan日志系统

约束与限制

在下述版本验证通过:

DevEco Studio: 5.0.5.315, SDK: HarmonyOS 5.0.1 Release Ohos_sdk_public 5.0.1.115 (API Version 13 Release)

目录结构

|---- Logan
|     |---- AppScrope  # 示例代码文件夹
|     |---- entry  # 示例代码文件夹
|     |---- core  # Logan库独立发布
|     |---- library # logan库文件夹  
|           |---- build  # logan模块打包后的文件
|           |---- index.ets  # 对外接口     
|     |---- README.md  # 安装使用方法
|     |---- CHANGELOG.md  # 更新日志

贡献代码

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

开源协议

本项目基于 MIT license ,请自由地享受和参与开源。

其他库

About

Logan-ext是一个为OpenHarmony开发的日志库,基于美团技术团队的Logan进行鸿蒙化改造并进行拓展而来

Resources

License

Stars

Watchers

Forks

Packages

No packages published