IT评测·应用市场-qidao123.com技术社区

标题: 鸿蒙5.0版开辟:利用HiLog打印日记(C/C++) [打印本页]

作者: 铁佛    时间: 2024-11-28 03:37
标题: 鸿蒙5.0版开辟:利用HiLog打印日记(C/C++)
 往期鸿蒙全套实战文章必看:



在应用开辟过程中,可在关键代码处输出日记信息。在运行应用后,通过查察日记信息来分析应用执行情况(如应用是否正常运行、代码运行时序、运行逻辑分支是否正常等)。
HiLog日记系统,提供给系统框架、服务、以及应用,用于打印日记,记录用户操纵、系统运行状态等。
接口分析

HiLog中界说了DEBUG、INFO、WARN、ERROR、FATAL五种日记级别,并提供了对应的方法输出不同级别的日记,接口如下表所示。
方法/宏接口形貌bool OH_LOG_IsLoggable(unsigned int domain, const char *tag, LogLevel level) 查抄指定domain、tag和日记级别的日记是否可以打印。
如果指定日记可以打印则返回true;否则返回false。
int OH_LOG_Print(LogType type, LogLevel level, unsigned int domain, const char *tag, const char *fmt, ...) 输出指定domain、tag和日记级别的日记,并按照printf格式类型和隐私指示确定需要输出的变参。
打印成功则返回日记总字节数;失败则返回-1。
#define OH_LOG_DEBUG(type, ...) ((void)OH_LOG_Print((type), LOG_DEBUG, LOG_DOMAIN, LOG_TAG, __VA_ARGS__))DEBUG级别写日记,宏封装接口。#define OH_LOG_INFO(type, ...) ((void)OH_LOG_Print((type), LOG_INFO, LOG_DOMAIN, LOG_TAG, __VA_ARGS__))INFO级别写日记,宏封装接口。#define OH_LOG_WARN(type, ...) ((void)OH_LOG_Print((type), LOG_WARN, LOG_DOMAIN, LOG_TAG, __VA_ARGS__))WARN级别写日记,宏封装接口。#define OH_LOG_ERROR(type, ...) ((void)OH_LOG_Print((type), LOG_ERROR, LOG_DOMAIN, LOG_TAG, __VA_ARGS__))ERROR级别写日记,宏封装接口。#define OH_LOG_FATAL(type, ...) ((void)OH_LOG_Print((type), LOG_FATAL, LOG_DOMAIN, LOG_TAG, __VA_ARGS__))FATAL级别写日记,宏封装接口。void OH_LOG_SetCallback(LogCallback callback)注册函数,注册后可通过LogCallback回调获取本进程所有的hilog日记。 参数剖析

分析
   OH_LOG_IsLoggable()和OH_LOG_Print()利用的domain、tag和level应保持一致。
  
约束与限制

日记打印最多打印4096字节,超出限制文本将被截断。
开辟步调

日记回调接口利用示例

  1. #include "hilog/log.h"
  2. static constexpr OHOS::HiviewDFX::HiLogLabel LABEL = {LOG_CORE, 0xD003200, "MY_TAG"};
  3. // 回调函数,开发者自定义的日志处理函数
  4. void MyHiLog(const LogType type, const LogLevel level, const unsigned int domain, const char *tag, const char *msg)
  5. {
  6.     // user-defined to handle your log, such as redirect/filter
  7. }
  8. static void Test(void)
  9. {
  10.    // 1.注册回调接口
  11.     OH_LOG_SetCallback(MyHiLog);
  12.    
  13.    // 2.调用hilog接口打印日志,日志内容会输出到hilog,同时通过回调返回给MyHiLog,开发者可以在MyHiLog中自行处理日志
  14.    HiLog::Info(LABEL, "hello world");
  15. }
复制代码
看完三件事❤️