ArkTS - api12以上 接入腾讯Xlog,拿来即用

57 阅读2分钟

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 在这里插入图片描述