Logback能否以能给appender设置标记,使自定义过滤器根据标记来过滤日志?

发布于 2022-09-12 23:54:33 字数 384 浏览 10 评论 0

java有很多第三方框架,这些框架会自己输出一些debug、error级别的日志,而我的日志输出需求是,输出我编写代码的debug级别的日志,但又不想输出第三方框架内的debug级别的日志,但有又想输出所有error,warn级别的日志。

我想到了自定义过滤器,过滤器检测到debug日志时,如果日志输出的位置不是我java项目中的包名,就丢弃,如果是我项目包名下的debug级别的日志。就放行。如果检测到error,warn级别的日志,就全部放行。

但有没有比包名过滤更好的方法呢?比如标记

比如appender设置一个标记字符串为 “key”,至于这个标记怎么设置,不是重点。我想在该appender规则下制造的日志对象,在自定义过滤器里能否在ILoggingEvent的非Msg内容里找到名为“key”的标记呢。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

强者自强 2022-09-19 23:54:33

不用这么复杂。

logging.level.root=warn
logging.level.you.package.path=debug

不知道你使用的配置形式,spring boot 使用的 log 框架这么配置就行了,所有的 log 框架都有类似的配置。

希望自定义过滤方式,参考 ch.qos.logback.classic.filter.LevelFilter
能够判断等级与日志信息,实现自定义过滤。

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>DEBUG</level>
            <onMatch>DENY</onMatch>
            <onMismatch>ACCEPT</onMismatch>
        </filter>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文