HarmonyOS:日志打印并且写入本地文件,并上传服务器

784 阅读1分钟

背景:有的时候,客户的线上问题无法复现,只能通过日志定位客户的问题,比如定位的日志信息,需要通过日志来确定问题,所以需要这样日志系统。

在开源的鸿蒙三方库中有这样的一个三方库:@pie/log4a(V1.5.0),当前最新版本1.5.0,亲测有效。 使用方法: 1.第一步安装三方库

ohpm install @pie/log4a

2.安装依赖库

ohpm install @ohos/mail

3.使用方法

  1. 入口类初始化LogManager,
LogManager.getLogger('Index')
    .addFileAppender('Xlog.log', 'mainAppender', Level.INFO, {
      maxCacheCount: 10,
      maxFileSize: 10,
      expireTime: 5,
      useWorker: true
    })
    .bindAppender(smtpAppender);

参数说明:Xlog.log是日志文件名字

useWorker: true多线程处理日志

maxFileSize:单个文件最大size

maxCacheCount:最多存储日志文件数量

expireTime:日志文件最多保存天数 2. 具体使用方法

@State logger: Logger = LogManager.getLogger(this);

 this.logger.withMarker(MarkerManager.getMarker('Test Marker'))
        .info('this is a test log, this is a test log, this is a test log, this is a test log, this is a test log, ');

3.实际日志

WechatIMG223.png

4.日志路径

getFileAppender(path: string, name: string, level: Level, options?: FileAppenderOptions) {
    if (this._fileAppenderMap.has(path)) {
      let exist = this._fileAppenderMap.get(path)!;
      if (options != undefined && !exist.matchOptions(options)) {
        this._fileAppenderMap.delete(path);
      } else {
        return this._fileAppenderMap.get(path);
      }
    }
    this._fileAppenderMap.set(path, new FileAppender(path, name, level, options));
    return this._fileAppenderMap.get(path);
  }

5.上传服务器 在客户端使用TCPSocketAppender,除追加器默认参数外,还需要提供远端服务器地址及端口:

// ServerAppenderConstants.ets
import { TCPSocketAppender } from '@pie/log4a';

export const serverAppender = new TCPSocketAppender({
    address: '114.xxx.xxx.xxx', //换成你的服务器ip
    port: 1234, //换成你的服务器对应端口
    name: 'socket',
    level: Level.ALL
});

具体参考作者的demo用法:gitee.com/ericple/log…

作者的博客有详细用法:ericple.atomgit.net/log4a-docs/…