ArkTS - api12 接入腾讯Xlog,拿来即用 1、导入依赖
"@ohos/mars": "^2.0.0"
2、新建XLog工具类
import { Log, Xlog } from '@ohos/mars';
import BuildProfile from '../../../../../BuildProfile';
export class XLog {
private static xlogInstance: Xlog | null = null;
private static TAG = 'TAG';
static init(filesDir: string) {
// 设置自己公钥
const XLOG_PUB_KEY = "";
// 设置日志路径
const logPath = filesDir + "/log";
// 设置日志文件名
const logFileName: string = "xLog";
// 初始化日志级别为-1(无效级别)
let level: number = -1;
// 如果XLogUtil没有实例化xlogInstance,则进行实例化
if (!XLog.xlogInstance) {
XLog.xlogInstance = new Xlog();
}
// 设置日志最大存活时间为15天
XLog.xlogInstance.setMaxAliveTime(0, 15 * 24 * 60 * 60);
// 设置日志最大文件大小为10M
XLog.xlogInstance.setMaxFileSize(0, 10 * 1024 * 1024);
// 根据BuildConfig.DEBUG的值设置日志级别和是否开启控制台日志
if (BuildProfile.DEBUG) {
level = Xlog.LEVEL_DEBUG; // 调试模式下设置为LEVEL_DEBUG
XLog.xlogInstance.setConsoleLogOpen(0, true); // 开启控制台日志
} else {
level = Xlog.LEVEL_VERBOSE; // 非调试模式下设置为LEVEL_VERBOSE
XLog.xlogInstance.setConsoleLogOpen(0, false); // 关闭控制台日志
}
// 设置日志实现为XLogUtil的xlogInstance
Log.setLogImp(XLog.xlogInstance);
// 初始化Xlog,设置异步模式、日志路径、日志文件名和公钥
Xlog.open(true, level, Xlog.AppednerModeAsync, "", logPath, logFileName, XLOG_PUB_KEY);
// 记录一条INFO级别的日志,表示xLog初始化完成
XLog.info("xLog init");
}
static onDestroy() {
if (XLog.xlogInstance) {
// 销毁时同步日志到磁盘
XLog.xlogInstance.appenderFlush(0,true);
XLog.xlogInstance.appenderClose();
}
}
// 自定义自己拼接方式
private static getLogContent(args: string[]): string {
let concatenatedString = "";
if (args != null && args.length > 0) {
for (let i = 0; i < args.length; i++) {
if (i > 0) {
concatenatedString += ":";
}
concatenatedString += args[i];
}
}
return concatenatedString;
}
static info(...args: string[]): void {
let logContentString = XLog.getLogContent(args);
Log.i(XLog.TAG, logContentString);
}
static debug(...args: string[]): void {
let logContentString = XLog.getLogContent(args);
Log.d(XLog.TAG, logContentString);
}
static warn(...args: string[]): void {
let logContentString = XLog.getLogContent(args);
Log.w(XLog.TAG, logContentString);
}
static error(...args: string[]): void {
let logContentString = XLog.getLogContent(args);
Log.e(XLog.TAG, logContentString);
}
}
3、初始化和更新磁盘里的xLog文件内容,在自己需要的地方使用,例如在EntryAbility中使用:
export default class EntryAbility extends UIAbility {
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
//初始化日志工具
XLog.init(this.context.filesDir);
}
onDestroy(): void {
//程序退出时更新和关闭日志
XLog.onDestroy();
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy');
}
}
4、打印和使用
Column() {
}.onClick(() => {
XLogUtil.info("ComWebViewPage onClick");
})
5、在/data/storage/el2/base/haps/entry/files/log下查看生成的xlog