【简介】
对于EasyLogger 我么已经完成了从裸机环境到FreeRTOS的同步及异步方式的log输出管理。对于一个日志库日志过滤功能是个很实用的需求,EasyLogger 也是支持日志过滤功能的。EasyLogger 在每个条log输出时会带有Tag 信息,过滤的时候可以通过Tag 信息来过滤log,除了TAG 外每条log 还有对应输出level 也可以按照level 进行过滤。

【elog 开关验证】
除了上述的按照按照Tag 过滤log 的方式外,同样也可以通过总开关来“on/off”EasyLogger 的log 输出。
本地天下如下代码来控制elog 的on/off
else if(argc == 2 && (0 == strcmp(argv[1],"test")))
{
/* test log output for all level */
log_a("Hello EasyLogger!");
log_e("Hello EasyLogger!");
log_w("Hello EasyLogger!");
log_i("Hello EasyLogger!");
log_d("Hello EasyLogger!");
log_v("Hello EasyLogger!");
}
else if (!strcmp(argv[1], "on") || !strcmp(argv[1], "ON"))
{
elog_set_output_enabled(true);
} else if
(!strcmp(argv[1], "off") || !strcmp(argv[1], "OFF")) {
elog_set_output_enabled(false);
}上述代码 elog off 后测试代码的输出已经按照预期关闭,elog on 后测试代码打印log 又恢复输出

【elog TAG 过滤验证】
继续添加如下测试代码来验证elog 的Tag 过滤功能。
else if (argc == 3 && (0 == strcmp(argv[1],"tag")) && strlen(argv[2]) <= ELOG_FILTER_TAG_MAX_LEN)
{
elog_set_filter_tag(argv[2]);
}
我们使用上述测试代码来过滤tag 为test 的log 输入后,这时tag 为main 的log已经被过滤掉不显示。

重新配置过滤器的tag 为 main ,测试log又可以按照预期的显示了

【elog 关键字(kw)过滤验证】
添加如下的触发分支,根据输入的关键字进行log 过滤
else if (argc == 3 && (0 == strcmp(argv[1],"kw")) && strlen(argv[2]) <= ELOG_FILTER_KW_MAX_LEN)
{
elog_set_filter_kw(argv[2]);
}我们过滤log中带有 tid 关键字的log,测试log中只有带有"tid"的log 进行了输出,其他的都被屏蔽了。

【elog log等级过滤验证】
添加如下的触发分支,根据log等级进行log 过滤
else if (argc == 3 && (0 == strcmp(argv[1],"level")))
{
elog_set_filter_lvl(atoi(argv[2]));
}log 的等级定义如下

过滤配置了log过滤等级后只有优先级高于log 过滤等级的log 才会输出。

我要赚赏金
