API 说明

最近更新时间:2025-10-17 18:56:51

我的收藏
本文详细介绍终端性能监控 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);