该笔记类别主要是在自己学习时做的一些记录,方便自己很久不用忘掉时进行快速回忆
1 导入组件
代码位置:rt-thread-master\components\utilities\ulog
文件名 | 说明 |
---|---|
ulog.c | 日志主文件 |
console_be.c | 日志打印接口实现 |
syslog.c | 系统日志,不使用就没必要导入 |
根据使用需要的功能在rtconfig.h中添加宏定义,例如下列
/* Utilities */
#define RT_USING_ULOG
#define ULOG_OUTPUT_LVL_D
#define ULOG_OUTPUT_LVL 7
#define ULOG_ASSERT_ENABLE
#define ULOG_LINE_BUF_SIZE 128
/* log format */
#define ULOG_USING_FILTER
#define ULOG_USING_COLOR
#define ULOG_OUTPUT_TIME
#define ULOG_OUTPUT_LEVEL
#define ULOG_OUTPUT_TAG
#define ULOG_BACKEND_USING_CONSOLE
#define ULOG_SW_VERSION_NUM 0x00101
2 输出日志
代码 | 说明 |
---|---|
LOG_E(...) | 错误级别 |
LOG_W(...) | 警告级别 |
LOG_I(...) | 提示级别 |
LOG_D(...) | 调试级别 |
LOG_RAW(...) | 无级别,均输出 |
ulog_hexdump(n,size,buf,len) | 输入16进制 |
int main()
{
rt_thread_mdelay(1000);
uint8_t data[3] ={1,2,3};
LOG_E("error");
LOG_W("waring");
LOG_I("info");
LOG_D("debug");
LOG_RAW("unformatted\n");
ulog_hexdump("main", 8, data, sizeof(data)); //m
return 0;
}
输出结果
[1001] E/main: error
[1003] W/main: waring
[1005] I/main: info
[1007] D/main: debug
unformatted
D/HEX main: 0000-0008: 01 02 03
3 日志过滤
3.1按模块级别过滤
tag: 设备标签
level:等级
级别 | 名称 |
---|---|
LOG_LVL_ASSERT | 断言 |
LOG_LVL_ERROR | 错误 |
LOG_LVL_WARNING | 警告 |
LOG_LVL_INFO | 信息 |
LOG_LVL_DBG | 调试 |
LOG_FILTER_LVL_SILENT | 停止输出 |
LOG_FILTER_LVL_ALL | 全部 |
将会屏蔽掉设定等级一下的输出
int ulog_tag_lvl_filter_set(const char *tag, rt_uint32_t level)
举例:
int main()
{
ulog_tag_lvl_filter_set("main",LOG_LVL_WARNING);
rt_thread_mdelay(1000);
uint8_t data[3] ={1,2,3};
LOG_E("error");
LOG_W("waring");
LOG_I("info");
LOG_D("debug");
LOG_RAW("unformatted\n");
ulog_hexdump("main", 8, data, sizeof(data)); //m
return 0;
}
输出结果
[1001] E/main: error
[1003] W/main: waring
unformatted
3.2 按标签全局过滤
tag: 允许输出的标签关键字
该过滤方式可以对所有日志执行按标签过滤,只有包含标签信息的日志才允许输出,当tag为空时则取消过滤
void ulog_global_filter_tag_set(const char *tag)
3.3 按级别全局过滤
level:等级
级别 | 名称 | key |
---|---|---|
LOG_LVL_ASSERT | 断言 | 0 |
LOG_LVL_ERROR | 错误 | 3 |
LOG_LVL_WARNING | 警告 | 4 |
LOG_LVL_INFO | 信息 | 6 |
LOG_LVL_DBG | 调试 | 7 |
LOG_FILTER_LVL_SILENT | 停止输出 | 1 |
LOG_FILTER_LVL_ALL | 全部 | 255 |
void ulog_global_filter_lvl_set(rt_uint32_t level)
3.4 按关键词全局过滤
keyword: 为空则取消过滤
void ulog_global_filter_kw_set(const char *keyword);
网友评论