MS-RTOS 日志

更新时间:
2023-08-09
下载文档

MS-RTOS 日志

本章将介绍 MS-RTOS 日志 LOG 的使用。

LOG 相关 API

下表展示了 LOG 相关的 API 在两个权限空间下是否可用:

API用户空间内核空间
ms_log
ms_log_set_level
ms_log_set_fd
ms_log_crash
MS_LOGM
MS_LOGA
MS_LOGC
MS_LOGE
MS_LOGW
MS_LOGN
MS_LOGI
MS_LOGD
_MS_LOGM
_MS_LOGA
_MS_LOGC
_MS_LOGE
_MS_LOGW
_MS_LOGN
_MS_LOGI
_MS_LOGD

ms_log()

  • 描述 记录一则日志

  • 函数原型

void ms_log(ms_log_level_t level, const char *fmt, ...) MS_LOG_ATTR;
  • 参数
输入/输出参数描述
[in]level日志级别
[in]fmt格式化字符串

日志级别为以下的宏:

描述
MS_LOG_EMERG0U紧急事件消息,系统崩溃之前提示,表示系统不可用
MS_LOG_ALERT1U报告消息,表示必须立即采取措施
MS_LOG_CRIT2U临界条件,通常涉及严重的硬件或软件操作失败
MS_LOG_ERR3U错误条件
MS_LOG_WARNING4U警告条件,对可能出现问题的情况进行警告
MS_LOG_NOTICE5U正常但又重要的条件,用于提醒
MS_LOG_INFO6U提示信息
MS_LOG_DEBUG7U调试级别的消息
  • 返回值

  • 示例

日志宏

  • 描述 MS-RTOS 定义了一些日志相关的宏,使用前,需要在源文件里定义 MS_LOG_TAG 字符串。

  • 日志宏原型

#define MS_LOGM(fmt, ...)   ms_log(MS_LOG_EMERG,   "<0>" MS_LOG_TAG fmt, ##__VA_ARGS__)
#define MS_LOGA(fmt, ...)   ms_log(MS_LOG_ALERT,   "<1>" MS_LOG_TAG fmt, ##__VA_ARGS__)
#define MS_LOGC(fmt, ...)   ms_log(MS_LOG_CRIT,    "<2>" MS_LOG_TAG fmt, ##__VA_ARGS__)
#define MS_LOGE(fmt, ...)   ms_log(MS_LOG_ERR,     "<3>" MS_LOG_TAG fmt, ##__VA_ARGS__)
#define MS_LOGW(fmt, ...)   ms_log(MS_LOG_WARNING, "<4>" MS_LOG_TAG fmt, ##__VA_ARGS__)
#define MS_LOGN(fmt, ...)   ms_log(MS_LOG_NOTICE,  "<5>" MS_LOG_TAG fmt, ##__VA_ARGS__)
#define MS_LOGI(fmt, ...)   ms_log(MS_LOG_INFO,    "<6>" MS_LOG_TAG fmt, ##__VA_ARGS__)
#define MS_LOGD(fmt, ...)   ms_log(MS_LOG_DEBUG,   "<7>" MS_LOG_TAG fmt, ##__VA_ARGS__)

#define _MS_LOGM(fmt, ...)  ms_log(MS_LOG_EMERG,   fmt, ##__VA_ARGS__)
#define _MS_LOGA(fmt, ...)  ms_log(MS_LOG_ALERT,   fmt, ##__VA_ARGS__)
#define _MS_LOGC(fmt, ...)  ms_log(MS_LOG_CRIT,    fmt, ##__VA_ARGS__)
#define _MS_LOGE(fmt, ...)  ms_log(MS_LOG_ERR,     fmt, ##__VA_ARGS__)
#define _MS_LOGW(fmt, ...)  ms_log(MS_LOG_WARNING, fmt, ##__VA_ARGS__)
#define _MS_LOGN(fmt, ...)  ms_log(MS_LOG_NOTICE,  fmt, ##__VA_ARGS__)
#define _MS_LOGI(fmt, ...)  ms_log(MS_LOG_INFO,    fmt, ##__VA_ARGS__)
#define _MS_LOGD(fmt, ...)  ms_log(MS_LOG_DEBUG,   fmt, ##__VA_ARGS__)
  • 参数
输入/输出参数描述
[in]fmt格式化字符串
  • 返回值

  • 示例

ms_log_set_level()

  • 描述 设置 ms_log 函数可记录的日志级别(默认为 MS_LOG_DEBUG

  • 函数原型

ms_err_t ms_log_set_level(ms_log_level_t level);
  • 参数
输入/输出参数描述
[in]level日志级别
  • 返回值 MS-RTOS 内核错误码

  • 注意事项

  • 示例

ms_log_set_fd()

  • 描述 设置日志的文件描述符(默认为标准输出文件)

  • 函数原型

ms_err_t ms_log_set_fd(int fd);
  • 参数
输入/输出参数描述
[in]fd日志的文件描述符
  • 返回值 MS-RTOS 内核错误码

  • 注意事项

  • 示例

// define log tag
#define MS_LOG_TAG "[test]"

int main(int argc, char *argv[])
{
    // create log file
    int fd = ms_io_creat("/nor/app_log.txt", 0666);

    // set log file
    ms_log_set_fd(fd);

    // set log level
    ms_log_set_level(MS_LOG_DEBUG);

    // log info
    MS_LOGI("Please wait...");

    _MS_LOGI("Done!\n");

    // do some thing

    return 0;
}

ms_log_crash()

  • 描述 记录一则崩溃日志信息,会通过 ms_bsp_log_write 接口记录崩溃日志信息

  • 函数原型

void ms_log_crash(const char *fmt, ...);
  • 参数
输入/输出参数描述
[in]fmt格式化字符串
  • 返回值

  • 注意事项 该函数一般在 CPU 异常处理函数中调用,所以该函数实现时需要确保能在中断环境而非任务环境中断执行

  • 示例

文档内容是否对您有所帮助?
有帮助
没帮助