昇腾社区首页
中文
注册

DlogRecord

函数原型

void DlogRecord(int moduleId, int level, const char *fmt, ...);

函数功能

打印日志。

参数说明

表1 参数说明

参数

输入/输出

说明

module_id

输入

模块枚举值 | 日志类型枚举值

模块枚举值:

enum {
SLOG,          /**< Slog */
IDEDD,         /**< IDE daemon device */
IDEDH,         /**< IDE daemon host */
HCCL,          /**< HCCL */
FMK,           /**< Adapter */
HIAIENGINE,    /**< Matrix */
DVPP,          /**< DVPP */
RUNTIME,       /**< Runtime */
CCE,           /**< CCE */
HDC,           /**< HDC */
DRV,           /**< Driver */
MDCFUSION,     /**< Mdc fusion */
MDCLOCATION,   /**< Mdc location */
MDCPERCEPTION, /**< Mdc perception */
MDCFSM,
MDCCOMMON,
MDCMONITOR,
MDCBSWP,    /**< MDC base software platform */
MDCDEFAULT, /**< MDC undefine */
MDCSC,      /**< MDC spatial cognition */
MDCPNC,
MLL,      /**< abandon */
DEVMM,    /**< Dlog memory managent */
KERNEL,   /**< Kernel */
LIBMEDIA, /**< Libmedia */
CCECPU,   /**< aicpu shedule */
ASCENDDK, /**< AscendDK */
ROS,      /**< ROS */
HCCP,
ROCE,
TEFUSION,
PROFILING, /**< Profiling */
DP,        /**< Data Preprocess */
APP,       /**< User Application */
TS,        /**< TS module */
TSDUMP,    /**< TSDUMP module */
AICPU,     /**< AICPU module */
LP,        /**< LP module */
TDT,       /**< tsdaemon or aicpu shedule */
FE,
MD,
MB,
ME,
IMU,
IMP,
GE, /**< Fmk */
MDCFUSA,
CAMERA,
ASCENDCL,
TEEOS,
ISP,
SIS,
HSM,
DSS,
PROCMGR,     // Process Manager, Base Platform
BBOX,
AIVECTOR,
TBE,
FV,
MDCMAP,
TUNE,
HSS, /**< helper */
FFTS,
OP,
UDF,
HICAID,
TSYNC,
AUDIO,
TPRT,
ASCENDCKERNEL,
ASYS,
ATRACE,
RTC,
INVLID_MOUDLE_ID    // add new module before INVLID_MOUDLE_ID
};

日志类型枚举值:

#define DEBUG_LOG_MASK      (0x00010000U)    // print log to directory debug
#define SECURITY_LOG_MASK   (0x00100000U)    // print log to directory security
#define RUN_LOG_MASK        (0x01000000U)    // print log to directory run
#define STDOUT_LOG_MASK     (0x10000000U)    // print log to stdout

注:

  • 若module_id为负数,则本条日志信息将被丢弃。
  • 若module_id超过INVLID_MOUDLE_ID,则module_name将以对应的数值输出。
  • 若不指定日志类型,默认为调试日志。

level

输入

本条日志级别,枚举值如下:

#define DLOG_DEBUG 0x0      // debug level id
#define DLOG_INFO  0x1      // info level id
#define DLOG_WARN  0x2      // warning level id
#define DLOG_ERROR 0x3      // error level id
#define DLOG_NULL  0x4      // don't print log
#define DLOG_EVENT 0x10     // event log print level id

fmt

输入

待打印的内容。

  • 接口不校验内容合法性。
  • 单条日志最大长度为1024字节,超出则会截断。

返回值

无。

调用示例

char *msg= "hello";
DlogRecord(KERNEL | DEBUG_LOG_MASK, DLOG_INFO, "message is %s", msg);

宏定义及调用示例

头文件中还提供了相关宏,封装了DlogRecord供用户选择使用。

  • dlog_error
    //宏定义
    #define dlog_error(moduleId, fmt, ...)                                          \
        do {                                                                          \
            DlogRecord(moduleId, DLOG_ERROR, "[%s:%d]" fmt, __FILE__, __LINE__, ##__VA_ARGS__); \
        } while (TMP_LOG != 0)
    
    //调用示例
    char *msg= "hello";
    dlog_error(KERNEL | DEBUG_LOG_MASK, "message is %s", msg);
  • dlog_warn
    //宏定义
    #define dlog_warn(moduleId, fmt, ...)                                               \
        do {                                                                              \
            if (CheckLogLevel(moduleId, DLOG_WARN) == 1) {                                   \
                DlogRecord(moduleId, DLOG_WARN, "[%s:%d]" fmt, __FILE__, __LINE__, ##__VA_ARGS__);  \
            }                                                                               \
        } while (TMP_LOG != 0)
    
    //调用示例
    char *msg= "hello";
    dlog_warn(KERNEL | DEBUG_LOG_MASK, "message is %s", msg);
  • dlog_info
    //宏定义
    #define dlog_info(moduleId, fmt, ...)                                               \
        do {                                                                              \
            if (CheckLogLevel(moduleId, DLOG_INFO) == 1) {                                   \
                DlogRecord(moduleId, DLOG_INFO, "[%s:%d]" fmt, __FILE__, __LINE__, ##__VA_ARGS__);  \
            }                                                                               \
        } while (TMP_LOG != 0)
    
    //调用示例
    char *msg= "hello";
    dlog_info(KERNEL | DEBUG_LOG_MASK, "message is %s", msg);
  • dlog_debug
    //宏定义
    #define dlog_debug(moduleId, fmt, ...)                                              \
        do {                                                                              \
            if (CheckLogLevel(moduleId, DLOG_DEBUG) == 1) {                                  \
                DlogRecord(moduleId, DLOG_DEBUG, "[%s:%d]" fmt, __FILE__, __LINE__, ##__VA_ARGS__); \
            }                                                                               \
        } while (TMP_LOG != 0)
    
    //调用示例
    char *msg= "hello";
    dlog_debug(KERNEL | DEBUG_LOG_MASK, "message is %s", msg);
  • dlog_event
    //宏定义
    #define dlog_event(moduleId, fmt, ...)                                          \
        do {                                                                          \
            DlogRecord(moduleId, DLOG_EVENT, "[%s:%d]" fmt, __FILE__, __LINE__, ##__VA_ARGS__); \
        } while (TMP_LOG != 0)
    
    //调用示例
    char *msg= "hello";
    dlog_event(KERNEL, "message is %s", msg);
  • Dlog
    //宏定义
    #define Dlog(moduleId, level, fmt, ...)                                                 \
        do {                                                                                  \
            if (CheckLogLevel(moduleId, level) == 1) {                                           \
                DlogRecord(moduleId, level, "[%s:%d]" fmt, __FILE__, __LINE__, ##__VA_ARGS__);   \
            }                                                                                  \
        } while (TMP_LOG != 0)
    
    //调用示例
    char *msg= "hello";
    Dlog(KERNEL | DEBUG_LOG_MASK, DLOG_INFO, "message is %s", msg);
  • DlogSub
    //宏定义
    #define DlogSub(moduleId, submodule, level, fmt, ...)                                                   \
        do {                                                                                                  \
            if (CheckLogLevel(moduleId, level) == 1) {                                                           \
                DlogRecord(moduleId, level, "[%s:%d][%s]" fmt, __FILE__, __LINE__, submodule, ##__VA_ARGS__);    \
            }                                                                                                   \
        } while (TMP_LOG != 0)
    
    //调用示例
    char *msg= "hello";
    DlogSub(KERNEL | DEBUG_LOG_MASK, "drv_log", DLOG_INFO, "message is %s", msg);