Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

请问,过滤TAG 函数,只是符合TAG能打印出来,我想过滤这个TAG不打印出来怎么弄 #59

Closed
MRkuan opened this issue Nov 29, 2019 · 9 comments

Comments

@MRkuan
Copy link
Contributor

MRkuan commented Nov 29, 2019

如题

elog_set_filter_tag 这个API是LOG中TAG符合才会输出,我想要个API,符合不输出,应该,好弄把

    else if (!strstr(tag, elog.filter.tag))     /* tag filter */
    {
        //TODO 可以考虑采用KMP及朴素模式匹配字符串,提升性能
        return;
    }

这块 改成?

    else if (strstr(tag, elog.filter.tag))     /* tag filter */
    {
        //TODO 可以考虑采用KMP及朴素模式匹配字符串,提升性能
        return;
    }

或者为了保持原来的 elog_set_filter_tag 接口,增加个 elog_set_unfilter_tag 接口

   //伪代码演示
    else if (!strstr(tag, elog.filter.tag) && filter_mode == true)     /* tag filter */
   {
  
   }
    else if (!strstr(tag, elog.filter.tag)&& filter_mode == false) )     /* tag filter */
    {
        //TODO 可以考虑采用KMP及朴素模式匹配字符串,提升性能
        return;
    }
@armink
Copy link
Owner

armink commented Nov 29, 2019

一般常见的是过滤完后,保留想要的日志,你这个正好相反。

或者改下逻辑,当设定的过滤 TAG 的首字母是 ! 时,自动过滤不含该 TAG 的日志

@MRkuan
Copy link
Contributor Author

MRkuan commented Nov 29, 2019

一般常见的是过滤完后,保留想要的日志,你这个正好相反。

或者改下逻辑,当设定的过滤 TAG 的首字母是 ! 时,自动过滤不含该 TAG 的日志

这样?

    if (elog.filter.tag[0] == '!')
    {
        if (NULL == strstr(tag, &(elog.filter.tag[1]))     /* tag filter */
        {
            //TODO 可以考虑采用KMP及朴素模式匹配字符串,提升性能
            return;
        }
    else if (!strstr(tag, elog.filter.tag))     /* tag filter */
    {
        //TODO 可以考虑采用KMP及朴素模式匹配字符串,提升性能
        return;
    }

可以合并到主线中?

@armink
Copy link
Owner

armink commented Nov 29, 2019

你有测试过吗?NULL == 是不是多余了?记得更新下 API 文档,别的问题就没了哈

@MRkuan
Copy link
Contributor Author

MRkuan commented Nov 29, 2019

你有测试过吗?NULL == 是不是多余了?记得更新下 API 文档,别的问题就没了哈

好,晚上回家测试提交下PR

我想了下,现有的接口是过滤一个TAG,如果多个呢?是否可以搞个过滤tag群组,目前项目上使用elog 有这个需求,再把反过滤 ! 用起来,丰富过滤

岂不美哉?(王朗大笑)

@armink
Copy link
Owner

armink commented Nov 29, 2019

一般是设定某个 tag 的日志,在输出时限定其 level ,当然这个 level 可以设定为最高级,也就是这个 tag 的日志也就不会输出内容了

@MRkuan
Copy link
Contributor Author

MRkuan commented Nov 29, 2019

一般是设定某个 tag 的日志,在输出时限定其 level ,当然这个 level 可以设定为最高级,也就是这个 tag 的日志也就不会输出内容了

那个level 是全局的level, 没办法 动态的 调整某个模块TAG 的level

我看了下现有的接口,没办法 动态 的调整 某个模块TAG 的level,只能静态通过宏编译去控制
其实如果可以做到这个,也就没有必要我提出今天issue了

@armink
Copy link
Owner

armink commented Nov 29, 2019

每个 tag 一个动态 level 挺好实现的,想搞吗,我可以协助你完成这个功能哈

@MRkuan
Copy link
Contributor Author

MRkuan commented Nov 29, 2019

每个 tag 一个动态 level 挺好实现的,想搞吗,我可以协助你完成这个功能哈

大佬,给个机会,我来提交这个PR,可以吹牛逼,参与过开源项目了

@armink
Copy link
Owner

armink commented Dec 1, 2019

fixed in #60

@armink armink closed this as completed Dec 1, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants