日志API使用
定义日志模块
- 定义一个日志模块ID,请注意定义的ID的值需要是唯一的。
#define USER_DEFINE_ERROR 0x6001
Atlas 500 DDK安装目录下的“include/inc/hiaiengine/status.h”文件中已有部分模块ID定义,请避免和其中定义的ID冲突。
- 定义该日志模块的错误码的枚举,如果有多个错误,就在该枚举定义多个错误码。
typedef enum
{
USER_DEFINE_OK_CODE, USER_DEFINE_INVALID_CODE
} USER_DEFINE_CODE;
- 以HIAI_DEF_ERROR_CODE(宏定义)注册2中定义的错误码。“moduleId”对应1定义的模块ID,“loglevel”是注册给该错误码的日志级别,有“HIAI_ERROR”、“HIAI_INFO”、“HIAI_DEBUG”和“HIAI_WARNING”四个级别可以使用。“codeName”对应2中错误码的枚举标识(去除“_CODE”)的内容,“codeDesc”为该错误码的描述信息。该宏定义实现和使用示例如下所示:
HIAI_DEF_ERROR_CODE(moduleId, logLevel, codeName, codeDesc) HIAI_DEF_ERROR_CODE(USER_DEFINE_ERROR,HIAI_ERROR,USER_DEFINE_OK,"OK")
输出日志到dlog日志文件
Atlas 500业务软件中可以调用HIAI_ENGINE_LOG输出日志到dlog日志文件,具体操作请参考《Matrix API参考》中的“日志(C++语言)”章节。日志打印格式有八种,本章节结合日志注册的内容介绍其中的一种。其定义方式和使用示例如下所示:
- 函数格式如下,参数说明如表8-4所示。
#define HIAI_ENGINE_LOG(...) \
HIAI_ENGINE_LOG_IMPL(__FUNCTION__, __FILE__, __LINE__, ##__VA_ARGS__)
void HIAI_ENGINE_LOG_IMPL(const char* funcPointer, const char* filePath, int lineNumber, const uint32_t errorCode, const char* format, ...);
- 日志打印调用实现示例如下所示。
HIAI_ENGINE_LOG(HIAI_INVALID_INPUT_MSG, "RUNNING OK");