一、日志级别:日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,例如:若是设置为WARN,则低于WARN的信息都不会输出html
二、根节点:configurationjava
configuration 有三个可选属性:web
a、scan属性:用来设置配置文件变更时是否从新加载,值是true\false,默认是true即配置变更时从新加载spring
b、scanperiod属性:用来设置每隔多久检查一次配置是否变更,默认是1分钟,默认单位是毫秒apache
c、debug属性:用来设置是否将logback内部的日志打印出来,即启动时输出配置加载信息。值为true\false 默认为false数组
三、property节点:springboot
设置要使用的或者共用的变量,property包含两个属性name和value;其中name的值是变量的名称,value的值是变量所表明的值。mybatis
<property>定义的值可使用“${变量名}”到logger上下文中。app
四、springProperty节点编辑器
该标签的工做方式相似于Logback的标准<property>标签。可是,value您无需指定direct,而是指定source属性的(来自Environment)。
若是须要将属性存储在local范围以外的其余位置,则可使用该scope属性。
若是须要后备值(若是未在中设置属性Environment),则可使用defaultValue属性。
5.appender节点
appender节点能够有多个,分别针对不一样的包或者类作不一样的输出,
若是appender输出到文件时,能够设置append子节点值true/false,是末尾追加日志仍是替换日志,值为true时表示追加。
能够在appender中使用filter节点(过滤器),在此节点内过滤日志级别(使用level节点指定),过滤后会返回一个枚举值,
即DENY,NEUTRAL,ACCEPT其中之一:
A、返回DENY,日志将当即被抛弃再也不通过其余过滤器;
B、返回NEUTRAL,有序列表里的下个过滤器接着处理日志;
C、返回ACCEPT,日志会被当即处理,再也不通过剩余过滤器
若是须要使用这些值作处理时,须要使用onMatch(level级别或大于level级别的)和onMismatch(级别小于level级别的)
六、logger节点
用来设置某一个包或者具体的某一个类的日志打印级别、以及指定appender。logger仅有一个name属性和两个可选的level、addtivity属性。
Name属性:用来指定受此logger约束的某一个包或者具体的某一个类。
Level属性:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR
若是未设置此属性,那么当前logger将会继承上级的级别。
Addtivity属性:用来设置是否向上级logger传递打印信息。默认是true。
logger能够包含零个或多个appender-ref元素,标识这个appender将会添加到这个logger
七、root节点
也是<logger>元素,可是它是根logger。只有一个level属性,由于已经被命名为"root".
level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR。默认是DEBUG。
root能够包含零个或多个appender-ref元素,标识这个appender将会添加到这个logger
八、pattern节点定义的输出模式解释
%d{HH:mm:ss.SSS} 当前时间;
[%thread] [当前线程名称]
%-5level logger级别
%logger{36} logger名称
-%msg%n 定义的输出
%line 输出日志的行号
%n 换行
%date和%d{yyyy-MM-dd HH:mm:ss.SSS} 当前时间包含年月日
{%C.java:%L} 输出日志所在的java类、所在行及路径能够替换[%thread]
九、appender下的filter的常见种类
在logback中,过滤器能够添加到Appender上。经过添加一个或多个过滤器到Appender,你能够经过任意条件,
好比:日志内容、MDC内容、时间等等日志的任何部分,过滤日志事件。
级别过滤器
级别过滤器(LevelFilter)是基于准确匹配日志级别。若是日志级别等于配置的级别,过滤器经过配置中的OnMatch与OnMismatch属性决定是接受仍是拒绝事件。
阀值过滤器
阀值过滤器(ThresholdFilter)过滤低于指定阀值的事件。当事件中的日志级别大于等于指定阀值时,过滤器的decide方法返回NEUTRAL。然而,拒绝日志级别小于阀值的事件。
条件过滤器
条件过滤器(EvaluatorFilter)是一种封装了EventEvaluator的经过过滤器。像名字表明的,条件过滤器是根据判断事件是否符合指定条件来分别返回OnMatch与OnMismatch属性里的值。
注意:EventEvaluator是一个抽象类,经过继承它,你能够实现你本身的条件逻辑。
详细注释见下图:
<?xml version="1.0" encoding="UTF-8"?> <configuration debug="false" scan="false"> <property name="LOG_ROOT" value="/home/pams"></property> <property name="LOG_PATH" value="log"/> <springProperty scop="context" name="spring.application.name" source="spring.application.name" defaultValue="dotware"/> <property name="log.path" value="${LOG_ROOT}/${LOG_PATH}/${spring.application.name}"/> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{MM-dd HH:mm:ss.SSS} %-5level [%logger{50}] - %msg%n</pattern> </encoder> </appender> <!-- Log file error output --> <!-- 天天生成日志文件,文件大小超过20则新生成一个文件, 同时将旧文件按${LOG_HOME}/logs/error.%d{yyyy-MM-dd}.%i.log格式保存,文件保存30天 --> <appender name="info" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在记录的日志文档的路径及文档名 --> <file>${log.path}/info.log</file><!-- 日志名称 --> <!-- 日志记录器的滚动策略,按日期,按大小记录 --> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- 天天日志归档路径以及格式 --> <fileNamePattern>${log.path}/%d{yyyy-MM}/info.%d{yyyy-MM-dd}.%i.log</fileNamePattern> <!-- 日志文件过大会使的编辑器打开很是慢,所以设置日志最大20MB --> <maxFileSize>20MB</maxFileSize> <!--日志文档保留天数--> <maxHistory>30</maxHistory> <cleanHistoryOnStart>true</cleanHistoryOnStart> <!-- <totalSizeCap>10GB</totalSizeCap> <!– 总日志大小 –>--> </rollingPolicy> <!-- encoder负责两件事,日志文档输出格式,一是把日志信息转换成字节数组,二是把字节数组写入到输出流 --> <encoder> <pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n</pattern> </encoder> <!-- 过滤器,能够过滤掉不符合条件的日志,INFO及以上的日志被处理,其它的拒绝 --> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>info</level> </filter> </appender> <appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${log.path}/debug.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${log.path}/%d{yyyy-MM}/debug.%d{yyyy-MM-dd}.%i.log</fileNamePattern> <maxFileSize>20MB</maxFileSize> <maxHistory>30</maxHistory> <cleanHistoryOnStart>true</cleanHistoryOnStart> </rollingPolicy> <encoder> <pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n</pattern> </encoder> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>debug</level> </filter> </appender> <appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${log.path}/error.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${log.path}/%d{yyyy-MM}/error.%d{yyyy-MM-dd}.%i.log</fileNamePattern> <maxFileSize>20MB</maxFileSize> <maxHistory>30</maxHistory> <cleanHistoryOnStart>true</cleanHistoryOnStart> </rollingPolicy> <encoder> <pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n</pattern> </encoder> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>error</level> </filter> </appender> <logger name="org.springframework" level="INFO"/> <logger name="org.springframework.web" level="INFO"/> <logger name="org.springframework.beans" level="INFO"/> <logger name="org.apache" level="WARN"/> <logger name="org.springboot.sample" level="INFO"/> <logger name="javax.activation" level="WARN"/> <logger name="org.mybatis.spring" level="INFO"/> <!-- Level: FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7 --> <root level="INFO"> <appender-ref ref="console"/> <appender-ref ref="debug"/> <appender-ref ref="error"/> <appender-ref ref="info"/> </root> </configuration>