<configuration> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <!-- encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder by default --> <encoder> <pattern>%d{HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n </pattern> </encoder> </appender> <logger name="cn.zno" level="WARN" /> <root level="INFO"> <appender-ref ref="STDOUT" /> </root> </configuration>
1. <logger name="cn.zno" level="WARN" />
作用是配置Logger类,在调用.trace .debug 等信息时进行拦截
class TestLogback { private final Logger logger = LoggerFactory.getLogger(getClass()); public void printLog() { logger.trace("It is trace"); logger.debug("It is debug"); logger.info("It is info"); logger.warn("It is warn"); logger.error("It is error"); } }
依据以下代码 位于ch.qos.logback.classic.Logger.class :
if (effectiveLevelInt > level.levelInt) { return; }
effectiveLevelInt 可能的值是 5000 、10000 、20000 、30000 、40000
分别对应5个级别: trace 、debug 、info 、warn 、error
<logger name="cn.zno" level="WARN" /> 比如 WARN 值为30000 ,大于info debug trace ,则只会输出 warn error
2. <root level="" />
只能有一个root ,可被多个 appender 继承,可以影响effectiveLevelInt 的值,以<logger 为主
如果把<root 视为 父类,那么 <logger 就是子类
如果子类没有指定该值,则以父类为准
如果子类指定了该值,则以子类为准