logback只打印当前级别的日志

1,772 阅读1分钟

springboot默认使用了logback作为日志框架,如果你引入了springbootstart-web模块,那么就不需要额外引入logback的依赖

logback只打印当前级别日志 主要是由于对于appender组件的不熟悉

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%C:%L] - %m%n aaa</pattern>
            <charset>utf8</charset>
        </encoder>
           <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>DEBUG</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

Appender组件主要用于指定日志输出的目的地,目的地可以是控制台、文件、远程套接字服务器、 MySQL、PostreSQL、 Oracle和其他数据库、 JMS和远程UNIX Syslog守护进程等

其中 class 为appender的实现类,对应的有console,fileAppender,RollingFileAppender等等。

encoder 定义了输出的格式 时间 线程 类名 行数 输出内容等等

filter 级别过滤器,根据日志级别进行过滤。如果日志级别等于配置级别,过滤器会根据onMath 和 onMismatch接收或拒绝日志。有以下子节点:

  1. level:设置过滤级别

  2. onMatch:用于配置符合过滤条件的操作

onMismatch:用于配置不符合过滤条件的操作

例如:将过滤器的日志级别配置为INFO,所有INFO级别的日志交给appender处理,非INFO级别的日志,被过滤掉。

如此 问题就出来了 如果按照我上图的配置 就只会打印DEBUG级别的日志,DEBUG级别以外的日志 都不会打印

还是要注意细节问题。