本文将为您介绍 Harmony 平台如何进行 SDK 的初始化。
示例代码
初始化 Harmony SDK 日志诊断能力,完整的示例代码如下。
import { ILogInstance, TDLog, LogLevel, TDLogMode, TDDiag, TDDiagUploadParams } from 'rumPro';public static initRumProDiagnose(context: Context) {// 1、TDLog初始化(可选,如无自建日志组件推荐使用)let logBuilder = new TDLogBuilder();logBuilder.logDir = "xxx"; // 必填,日志的输出路径,填写示例如 getContext(this).filesDir + "/rumPro_tdlog"logBuilder.namePrefix = "xxx"; // 必填,日志文件的前缀名称logBuilder.consoleLog = true; // 可选,是否同时将日志打印到consolelogBuilder.logLevel = LogLevel.LEVEL_ALL; // 可选,设置日志输出等级,详见初始化参数参考值logBuilder.mode = TDLogMode.Async; // 可选,设置日志写入模式,分同步和异步,Release版本一定要用异步Async方式,Debug版本两个都可以,Sync可能有卡顿logBuilder.pubKey = "xxx"; // 可选,可参考 https://github.com/Tencent/mars 使用 `gen_key.py` 生成公私钥,并联系RumPro小助手提供公私钥进行后台配置,同时在此传入公钥,即可在RumPro平台上传日志后进行解密,若后台无配置会导致线上日志解密失败logBuilder.maxFileSize = 50 * 1024 * 1024; // 可选,设置单个日志文件的最大值,单位字节,默认50MlogBuilder.maxAliveTime = 7 * 24 * 60 * 60; // 可选,设置日志文件的保存时间,单位秒,默认7天logBuilder.subLogDirs = subLogDirsArray; // 可选,如有设置日志子实例,需在初始化时提前设置所有子实例日志输出路径,用于RumPro平台捞取,设置类型为数组TDLog.init(logBuilder);// 2、TDDiag初始化let diagBuilder = new TDDiagBuilder();diagBuilder.appId = "xxx"; // 必填,RumPro平台提供的appIddiagBuilder.appKey = "xxxx"; // 必填,RumPro平台提供的appKeydiagBuilder.platform = TDDiagBuilder.PLATFORM_CLOUD; // 必填,OA版本填 [TDDiagBuilder.PLATFORM_OA], 专业版本填 [TDDiagBuilder.PLATFORM_PRO]diagBuilder.appVersion = "1.0.0"; // 必填,设置app版本diagBuilder.loggerAdapter = TDLog.getTDLogAdapter(); // 必填,设置日志适配器,如使用自建日志组件,需自实现LoggerAdapter接口,并传入实例diagBuilder.xgTrafficQuota = 500 * 1024 * 1024; // 可选,每日可使用4G流量主动上报的日志大小,取值范围[0, 500],每日主动上报总流量大小(WIFI、4G)限制500MdiagBuilder.initiativeUploadWhiteListTags = whiteTags; // 可选,主动上报白名单tags列表,使用白名单中tag进行主动上报,将不受配额及上报频率限制diagBuilder.logUploadListener = new DemoLogUploadListener(); // 可选,设置日志主动上报的回调接口TDDiag.init(context, diagBuilder);// 3、设置TDDiag GuidTDDiag.setGuid("xxx"); // 必须初始化后设置,设置设备唯一标识Guid,用于日志捞取,设置后将触发配置拉取}
接口说明
初始化参数参考类
enum LogLevel {LEVEL_ALL = 0,LEVEL_VERBOSE = 0,LEVEL_DEBUG = 1,LEVEL_INFO = 2,LEVEL_WARNING = 3,LEVEL_ERROR = 4,LEVEL_FATAL = 5,LEVEL_NONE = 6}enum TDLogMode {Async = 0,Sync = 1}
主动上报回调接口
/*** 主动上报回调接口实现*/class DemoLogUploadListener implements LogUploadListener {onSuccess(): void {console.info("do custom log upload callback, success!");}onFailure(): void {console.info("do custom log upload callback, failure!");}}
注意:
context 需要传递 ApplicationContext 。
builder 类均需在init接口调用之前创建,且应避免重复调用 init 方法。
需要在调用 init 接口,完成初始化后,再调用 TDLog 或 TDDiag 的其他设置接口,否则设置可能不生效。
自实现日志组件适配接口(可选)
如需自实现日志组件,仅接入使用 RumPro 上报及捞取能力,可实现以下类,并将初始化时 diagBuilder.loggerAdapter 设置为自实现类的实例。
interface LoggerAdapter {/*** 设置日志染色级别* @param level 染色级别*/setColorLevel(level: LogLevel): void;/*** 打印TDDiag日志* @param level 日志等级* @param tag 日志tag* @param msg 日志内容* @param e error*/printDiagnoseLog(level: LogLevel, tag: string, msg: string, e: Error | null): void;/*** 获取日志加密公钥* @returns 不加密使用空串""*/getPubKey(): string;/*** 获取日志存放路径(如有日志子实例,需包含所有日志子实例输出路径),文件格式不限,按照创建时间捞取日志文件* @returns*/getLogPaths(): Array<string>;}