【鸿蒙(HarmonyOS)开发】native层开发日志显示的问题解决方案

admin 2024年1月28日10:48:49评论58 views字数 1715阅读5分43秒阅读模式

【鸿蒙(HarmonyOS)开发】native层开发日志显示的问题解决方案

【鸿蒙(HarmonyOS)开发】native层开发日志显示的问题解决方案

这里,写一篇文章,总结一下我在鸿蒙native层开发的时候,输出日志是我们观察程序结果和调试的重要方案,本文记录一下,我在使用日志的过程当中遇到的问题,仅供大家参考。

开发环境

我这里只有9的API,因此这里基于API 9进行测试,对于大于API 9的版本,因为我拿不到对应的sdk,因此无法测试,对于高版本文档,我这也看不了,因此也没办法查阅。

【鸿蒙(HarmonyOS)开发】native层开发日志显示的问题解决方案

具体环境如上图所示。

如何添加日志库

target_link_libraries(libhilog_ndk.z.so)

日志输出问题

static napi_value LogPrint(napi_env env, napi_callback_info info) {
    LOGD("%s, %d, %f""LQ"1231.0f);
    napi_value ret;
    napi_create_int32(env, 0, &ret);
    return ret;
}

你是否遇到过,日志不显示,只显示为<private>

【鸿蒙(HarmonyOS)开发】native层开发日志显示的问题解决方案

如果你也遇到了和我这个一样的问题,我们来看一下文档。

【鸿蒙(HarmonyOS)开发】native层开发日志显示的问题解决方案

于是乎,我们需要这么来写。

static napi_value LogPrint(napi_env env, napi_callback_info info) {
    LOGD("%{public}s, %{public}d, %{public}f""LQ"1231.0f);
    napi_value ret;
    napi_create_int32(env, 0, &ret);
    return ret;
}

这样,就可以正常来显示日志了。我们需要每次都手动添加{public},显得十分的麻烦,因此,我们需要稍微改进一下,这里封装一个函数,自动添加吧。

#include <regex>

#define TAG "LQ->"

std::string modifyString(const std::string &format) {
    static const std::regex re("%([sdxfeg]*)");
    return std::regex_replace(format, re, "%{public}$1");
}

#define LOGI(fmt, ...) ((void)OH_LOG_Print(LOG_APP, LOG_INFO, LOG_DOMAIN, TAG, modifyString(fmt).c_str(), __VA_ARGS__))
#define LOGW(fmt, ...) ((void)OH_LOG_Print(LOG_APP, LOG_WARN, LOG_DOMAIN, TAG, modifyString(fmt).c_str(), __VA_ARGS__))
#define LOGD(fmt, ...) ((void)OH_LOG_Print(LOG_APP, LOG_DEBUG, LOG_DOMAIN, TAG, modifyString(fmt).c_str(), __VA_ARGS__))
#define LOGE(fmt, ...) ((void)OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_DOMAIN, TAG, modifyString(fmt).c_str(), __VA_ARGS__))

好了,这样使用起来,就显得非常的舒服了。

总结

本文呢,给出了在native层添加日志的方案,以及日志要想正常的显示,需要添加{public}的标签,这里给出了一个自动添加标签的方案,这个方案仅供参考。

参考资料

  • https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/_hi_log-0000001447130392-V3

原文始发于微信公众号(Coder小Q):【鸿蒙(HarmonyOS)开发】native层开发日志显示的问题解决方案

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年1月28日10:48:49
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【鸿蒙(HarmonyOS)开发】native层开发日志显示的问题解决方案https://cn-sec.com/archives/2438194.html

发表评论

匿名网友 填写信息