本文详细介绍终端性能监控 Pro 日志 SDK 的功能接口,帮助您更加灵活、深度地使用日志 SDK。
打印日志
使用如下接口进行日志打印,默认会创建日志主实例,并用主实例打印日志。
TDLog.d("tag", "xxxxxxx");TDLog.i("tag", "xxxxxxx");TDLog.w("tag", "xxxxxxx");TDLog.e("tag", "xxxxxxx");TDLog.f("tag", "xxxxxxx");TDLog.printErrStackTrace("tag", error, "xxxx");
创建子实例打印日志(可选)
鸿蒙 TDLog 支持多日志实例,通常情况下仅使用主实例即可满足日志打印诉求,无需设置日志子实例。如有提供给第三方 SDK 打印日志等场景,可使用子实例打印。
// 初始化后,创建日志子实例const level = LogLevel.LEVEL_ALL; // 日志子实例打印等级const mode = TDLogMode.Async; // 日志子实例写入模式const logDir = "xxx"; // 日志子实例路径const namePrefix = "xxx"; // 日志子实例前缀const subIns: ILogInstance | null = TDLog.openSubLogInstance(level, mode, logDir, namePrefix);// 使用子实例打印日志if (subIns) {subIns.d("tag", "xxxxxxx");subIns.i("tag", "xxxxxxx");subIns.w("tag", "xxxxxxx");subIns.e("tag", "xxxxxxx");subIns.f("tag", "xxxxxxx");subIns.printErrStackTrace("tag", error, "xxxx");}
日志子实例的操作接口如下。
interface ILogInstance {/*** 强制将日志写入文件*/flushLog(): void;/*** 获取日志等级*/getLogLevel(): number;/*** 设置日志等级* @param level 日志等级*/setLogLevel(level: number): void;/*** 设置是否打印到控制台,不设置则默认使用主实例设置* @param isOpen 开启状态*/setConsoleLogOpen(isOpen: boolean): void;/*** 设置单个日志文件的最大值,不设置则默认使用主实例设置* @param maxFileSize 文件大小最大值,单位字节*/setMaxFileSize(maxFileSize: number): void;/*** 设置日志文件的保存时间,不设置则默认使用主实例设置* @param maxAliveTime 文件最大保存时间,单位秒*/setMaxAliveTime(maxAliveTime: number): void;}
验证本地日志文件
打印日志成功后可见本地日志文件。(如日志不完整,可尝试调用 TDLog.flushLog() 强制刷新日志)

其他日志接口
class TDLog {/*** 强制将日志写入文件(含日志子实例)*/public static flushLog();/*** 关闭日志实例(含日志子实例)*/public static closeLog();/*** 获取日志等级(仅日志主实例)*/public static getLogLevel(): number;/*** 设置日志等级(含日志子实例)* @param level 日志等级*/public static setLogLevel(level: number);/*** 关闭TDLog子实例* @param namePrefix 子实例名称前缀*/public static closeSubLogInstance(namePrefix: string);/*** 获取TDLog子实例* @param namePrefix* @returns*/public static getSubLogInstance(namePrefix: string): ILogInstance | null;}
Native 日志打印
如业务项目使用到 Native 模块,日志模块支持高效的 Native 层日志打印及刷新。需要先按照如下步骤在 CMakeList.txt 文件中引入 buglyxlog 依赖。
方式一:直接通过模块方式引入。
find_package(bugly REQUIRED CONFIG)target_link_libraries(test PUBLIC bugly::buglyxlog)
方式二:引入 Bugly Har 包中的 libbuglyxlog.so 及对应的 include 文件夹,如下所示。注意需替换为项目中真实的路径。
include_directories(xxx/oh_modules/.ohpm/xxx/oh_modules/bugly/include)add_library(buglyxlog_lib SHARED IMPORTED)if (CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64" OR CMAKE_ANDROID_ARCH_ABI STREQUAL "arm64-v8a")set_target_properties(buglyxlog_lib PROPERTIES IMPORTED_LOCATION xxx/oh_modules/.ohpm/xxx/oh_modules/bugly/libs/arm64-v8a/libbuglyxlog.so)elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64" OR CMAKE_ANDROID_ARCH_ABI STREQUAL "x86_64")set_target_properties(buglyxlog_lib PROPERTIES IMPORTED_LOCATION xxx/oh_modules/.ohpm/xxx/oh_modules/bugly/libs/x86_64/libbuglyxlog.so)else()message(FATAL_ERROR "Unsupported architecture")endif()target_link_libraries(test PUBLIC buglyxlog_lib)
Native 层日志打印及刷新接口如下:
#define OHOS_TDLOG_LEVEL_DEBUG 1#define OHOS_TDLOG_LEVEL_INFO 2#define OHOS_TDLOG_LEVEL_WARNING 3#define OHOS_TDLOG_LEVEL_ERROR 4/*** 打印日志* @param namePrefix 日志实例前缀,主实例直接填 nullptr,子实例填对应的前缀名* @param level 日志级别* @param tag 日志tag* @param log 日志内容*/void TDLogPrintLog(const char* namePrefix, int level, const char* tag, const char* log);/*** 刷新日志* @param namePrefix 日志实例前缀,主实例直接填 nullptr,子实例填对应的前缀名*/void TDLogFlushLog(const char* namePrefix);