文件最后提交记录最后更新时间
4 个月前
3 个月前
4 个月前
1 个月前
1 个月前
4 个月前
1 个月前
4 个月前
4 个月前
1 个月前
3 个月前
4 个月前
4 个月前
4 个月前
3 个月前
4 个月前
README.md

Xlog

简体中文 | English (敬请期待)

面向 Harmony OS 的log模块。

项目简介

Xlog是一种在Harmony OS上的log模块

  • 支持日志级别、日志存储路径、缓存路径、压缩算法、压缩级别、缓存文件天数等配置。
  • 支持同步、异步方式输出日志。
  • 提供日志文件历史记录。
  • 统一 ArkTS API,适配 Stage Ability 生命周期与后台恢复策略。

下载安装

ohpm install @ohos/xlog

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

编译说明

本仓库依赖openssl, 本地编译时需要下载tpc_c_cplusplus仓库编译openssl. 将编译好的openssl的静态库文件按下面目录结构存放,并放在library/src/main/cpp/external下。然后使用DevEco Studio打开工程编译即可完成。

external/openssl_lib_ohos/
├── arm64-v8a
│   ├── libcrypto.a
│   └── libssl.a
├── armeabi-v7a
│   ├── libcrypto.a
│   └── libssl.a
└── x86_64
    ├── libcrypto.a
    └── libssl.a

使用说明

1. 引入组件与常量

import { Log, Xlog, XLogConfig } from '@ohos/xlog';

2. 设置实例

Log.setLogImp(new Xlog())

3. 创建Xlog对象

let logPath: string = getContext().filesDir + "/xlog";
let cachePath: string = getContext().cacheDir + "/xlog";
let nameprefix: string = 'xlog_prefix';

let log: Log.LogInstance = Log.openLogInstance(Xlog.LEVEL_DEBUG, Xlog.APPENDER_MODE_SYNC, 
      cachePath, logPath, nameprefix, 1);

4. 日志输出

参数依次是tag, 当前文件,当前函数,文件行, 日志内容。

log.v("unit_xlog", "unit log info", null)
log.i("unit_xlog", "unit log info", null)
log.d("unit_xlog", "unit log info", null)
log.e("unit_xlog", "unit log info", null)
log.f("unit_xlog", "unit log info", null)

4. 设置输出到控制台

默认日志输出到文件。也可以设置日志同时输出到控制台。

log.setConsoleLogOpen(true)

5. 释放

Log.closeLogInstance(nameprefix)

核心类与接口

核心类

名称 类型 作用
Log 提供对象的创建、配置和输出接口
Xlog 提供log的直接操作接口。
XLogConfig 接口 提供Xlog配置参数, 包括日志配置级别、日志存储路径、缓存路径、压缩算法、压缩级别、缓存文件天数等。

核心配置参数

XLogConfig 提供了Xlog配置的参数,包括日志配置级别、日志存储路径、缓存路径、压缩算法、压缩级别、缓存文件天数等。

属性 使用说明
level 日志级别设置。
LEVEL_ALL: 所有级别
LEVEL_VERBOSE: 详细输出
LEVEL_DEBUG: 调试级别
LEVEL_INFO: 一般信息。
LEVEL_WARNING:警告级别
LEVEL_ERROR: 错误级别
LEVEL_FATAL: 致命级别
LEVEL_NONE: 无输出
mode Appender模式。
APPENDER_MODE_SYNC: 同步模式,立即保存日志到文件;
APPENDER_MODE_ASYNC: 异步模式,日志不会立即保存,而是每隔15分钟自动Flush一次。
logdir 日志保存路径。
cachedir 日志缓存路径,当前日志保存的目录。
cachedays 缓存日志保存的天数。当前日志先保存在cachedir, 达到cachedays天数,自动备份到 logdir
nameprefix 日志文件的名称前缀。一般日志文件格式为: {名称前缀}_{日期}.xlog
pubkey 日志加密使用的公钥。
compressmode 压缩模式。包含zlib和zstd两种模式。
ZLIB_MODE: zlib模式。
ZSTD_MODE: zstd模式。
compresslevel 压缩级别,在zstd压缩模式下有效,总共1-9九种级别。

接口说明

方法 说明
setLogImp(imp: Log.LogImp): void 设置Xlog对象。
getImpl(): Log.LogImp 获取Xlog对象。
openLogInstance(level: number, mode: number, cacheDir: string, logDir: string, nameprefix: string, cacheDays: number): Log.LogInstance 用于创建Xlog对象。
getLogInstance(prefix: string): Log.LogInstance 用于获取Xlog对象。
getLogLevel(): number 获取配置的日志级别。
setLevel(level: number): void 设置配置的日志级别。
appenderOpen(level: number, mode: number, cacheDir: string, logDir: string, nameprefix: string, cacheDays: number): void 打开一个appender。
appenderClose(): void 关闭一个appender。
appenderFlush(): void 用异步方式将缓存内容保存到文件。
appenderFlushSync(): void 用同方式将缓存内容保存到文件。
setConsoleLogOpen(isOpen: boolean): boolean 设置同时输出到控制台,默认输出到文件。
closeLogInstance(prefix: string): void 释放对象。
v(tag: string, msg: string): void 输出Verbose级别日志。
i(tag: string, msg: string): void 输出Info级别日志。
d(tag: string, msg: string): void 输出Debug级别日志。
w(tag: string, msg: string): void 输出Warning级别日志。
e(tag: string, msg: string): void 输出Error级别日志。
f(tag: string, msg: string): void 输出Fatal级别日志。
getDeviceInfo(): void 打印设备信息。
getSysInfo(): string 获取设备信息。

约束与限制

在下述版本验证通过:

  • DevEco Studio版本: 6.0.0.868, SDK: API18 Release(5.1.0)

目录结构

XLog/
├── entry/                 # Stage Ability 示例,测试
├── library/                # XLog ArkTS 引擎库,导出XLog接口
│      └── src/
│           └── main/
│                 └── ets/  
│                      ├── cpp   # XLog c++源码,接口导出
│                      ├── ets   # XLog ArkTs 接口
│                      ├── module.json5
│                      └── resources
├── AppScope/              # 应用范围配置
├── hvigorfile.ts          # 根级 Hvigor 构建配置
├── oh-package.json5       # ohpm 依赖与项目信息
└── README_zh.md           # 本说明文档

entry 模块包含一个测试界面,可以配置不同参数来严重能力。还有一个单元测试代码,验证接口功能。

关于混淆

  • 代码混淆,请查看代码混淆简介
  • 如果希望XLog库在代码混淆过程中不会被混淆,需要在混淆规则配置文件obfuscation-rules.txt中添加相应的排除规则:
-keep
./oh_modules/@ohos/xlog

开源协议

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

贡献代码

使用过程中发现任何问题都可以提 Issue 给组件,当然,也非常欢迎发 PR共建。