napi_typeof(env, args[1], &valueType);
if(valueType != napi_function) {
OH_LOG_Print(LOG_APP, LOG_ERROR, GLOBAL_RESMGR, TAG, "SetLogCallback fail,param[2] is not a function!");
return nullptr;
}
// 创建ArkTS端回调函数的引用
napi_create_reference(env, args[1], 1, &callbackRef);
g_env = env;
// 注册日志回调接口
OH_LOG_SetCallback(HiLogCallbackFilter);
OH_LOG_Print(LOG_APP, LOG_INFO, GLOBAL_RESMGR, TAG, "TestLogCallback SetCallback end");
return nullptr;
}
2. 在Native中实现自定义日志处理函数。
static void HiLogCallbackFilter(const LogType type, const LogLevel level, const unsigned int domain, const char *tag,
const char *msg) {
std::string strMsg(msg, strlen(msg) + 1);
// TODO: 知识点: 过滤要查找的日志
size_t foundIndex = strMsg.find(logToFilter);
if(foundIndex != -1) {
// ArkTS回调函数
napi_value callback = nullptr;
napi_get_reference_value(g_env, callbackRef, &callback);
// 返回日志内容
napi_value hilogArg;
napi_create_string_utf8(g_env, msg, NAPI_AUTO_LENGTH, &hilogArg);
napi_value ret;
// TODO: 知识点: 调用ArkTS端传入的回调函数
napi_call_function(g_env, nullptr, callback, 1, &hilogArg, &ret);
}
return;
}
3. 在Native中实现关闭日志回调功能。
static napi_value CancelLogCallback(napi_env env, napi_callback_info info) {
// 关闭日志回调
OH_LOG_SetCallback(nullptr);
OH_LOG_Print(LOG_APP, LOG_INFO, GLOBAL_RESMGR, TAG, “TestLogCallback CancelLogCallBack end”);