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

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

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

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

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

阅读 2k
1 个回答

不用这么复杂。

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>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题