| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 4 个月前 | ||
| 3 个月前 | ||
| 4 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 4 个月前 | ||
| 1 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 1 个月前 | ||
| 3 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 3 个月前 | ||
| 4 个月前 |
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 ,请自由地享受和参与开源。