RTT_探索ulog组件的使用1(全局静态日志等级、模块静态日志等级、过滤模块日志(打开/关闭/动态日志等级)、同一个文件输出多个模块日志、不在rtt studio如何显示彩色日志)

1、全局静态日志等级

1.1、为什么要设置不同的日志等级?

在不同的开发阶段,想要输出的信息是不同的。

前期开发,比较细致的信息可以使用Debug等级去输出,后面调试完毕提高日志级别就可以了,此时不要堆积大量信息,保留关键性环节的执行。

但是debug输出的信息代码又不想注释或删去,就可以通过日志级别来调整;

1.2、设置方式

RT-Thread Settings,找到ulog组件配置,静态输出日志级别;

这里设置全局静态日志等级为Information,也就是说经过模块日志等级过滤后,日志等级在Information以上的才会输出;(下面结合模块仍有说明)

2、模块的名称、模块静态日志等级、基本使用示例

想在哪个文件使用ulog组件时,宏定义里配置;

可选的日志级别有:

/* logger level, the number is compatible for syslog */
#define LOG_LVL_ASSERT                 0
#define LOG_LVL_ERROR                  3
#define LOG_LVL_WARNING                4
#define LOG_LVL_INFO                   6
#define LOG_LVL_DBG                    7

示例:

全局静态日志等级为Information,module1模块静态日志等级为Debug,

  • 首先,模块静态日志等级Debug过滤,是会让LOG_E/W/I/D都输出的;
  • 然后,全局日志等级Information过滤,LOG_E/W/I输出。
#define LOG_TAG              "module1"
#define LOG_LVL              LOG_LVL_DBG
#include <ulog.h>

int main()
{
    LOG_E("Error1");             //输出
    LOG_W("Warning1");           //输出
    LOG_I("Information1");       //输出
    LOG_D("Debug1");             //不输出             
}

3、过滤模块日志_打开/关闭模块日志、动态调整模块日志等级

对于某个模块,可以单独控制是否输出日志,需要在ulog组件配置中打开“使能运行时日志筛选器”。

3.1、关闭/打开模块日志输出

    //关闭module1的日志
    ulog_tag_lvl_filter_set("module1", LOG_FILTER_LVL_SILENT);
    //打开module1的日志
    ulog_tag_lvl_filter_set("module1", LOG_FILTER_LVL_ALL);

3.2、动态调整模块日志等级

比如,执行下面这条命令后,模块module1的日志等级会临时变为WARNING,这里所说的临时是相对于宏定义中的日志等级,下面5会提供一个实验。

    //动态修改module1的日志级别
    ulog_tag_lvl_filter_set("module1", LOG_LVL_WARNING);

4、同一个文件输出多个模块日志

不能使用LOG_X这个API,改为ulog_x,x=e/w/i/d,就可以自定义输出日志的模块名称。

    ulog_e("模块名","输出内容");  

5、以上说明的测试代码及实验结果

#define LOG_TAG              "module1"
#define LOG_LVL              LOG_LVL_DBG
#include <ulog.h>

int main(void)
{
    //全局日志lvl为information
    //module1的日志
    LOG_E("Error1");             //输出
    LOG_W("Warning1");           //输出
    LOG_I("Information1");       //输出
    LOG_D("Debug1");             //不输出
    //一个文件里想有另一个模块的日志-module2的日志
    ulog_e("module2","module2_error");  //输出
    ulog_d("module2","module2_debug");  //不输出
    //关闭module1的日志
    ulog_tag_lvl_filter_set("module1", LOG_FILTER_LVL_SILENT);
    LOG_E("Error2");             //不输出
    LOG_W("Warning2");           //不输出
    LOG_I("Information2");       //不输出
    LOG_D("Debug2");             //不输出
    //动态修改module1的日志级别
    ulog_tag_lvl_filter_set("module1", LOG_LVL_WARNING);
    LOG_E("Error3");             //输出
    LOG_W("Warning3");           //输出
    LOG_I("Information3");       //不输出
    LOG_D("Debug3");             //不输出
    //打开module1的所有日志,仍按宏定义中的等级,而不是上次的LOG_LVL_WARNING
    ulog_tag_lvl_filter_set("module1", LOG_FILTER_LVL_ALL);
    LOG_E("Error4");             //输出
    LOG_W("Warning4");           //输出
    LOG_I("Information4");       //输出
    LOG_D("Debug4");             //不输出

    while(1);
}

6、彩色日志

颜色对应着不同的含义,但是颜色只适合眼睛去看。

现在是日志实时输出到串口,还是用rt-thread stdio比较方便,如果是用户去使用,普通的串口调试助手是无法显示颜色信息的,如图:

我尝试了一款终端软件MobaXterm可以显示颜色,配置如下(支持Putty):

很喜欢这个软件的界面,丰富又简洁。

还发现一个优点,输出日志保存到文件,MobaXterm会自动去掉关于颜色的信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值