Spring-Boot"原生态"的logback
前言
Logback是由 log4j创始人设计的又一个开源日志组件;
logback当前分成三个模块:
logback-core
logbackclassic
logback-access
logback-core是其它两个模块的基础模块
如果在你的pom.xml中,依赖了 spring-boot-starter-web
,就可以不用再添加日志组件的依赖。
在 application.properties
中加入
#########logback##########
logging.config=classpath:logback-boot.xml
logback-boot.xml配置解说
默认的是 logback.xml ,如果要扩展的话,必须是logback-xxx.xml
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder charset="UTF-8">
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] %5p %m%n</pattern>
</encoder>
</appender>
<!-- 出错日志 appender -->
<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>./logs/error/LinkManagerAPP_error_console.log</file>
<append>true</append>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 按天回滚 daily -->
<fileNamePattern>./logs/error/LinkManagerAPP_%d{yyyy-MM-dd_HH}_ERROR</fileNamePattern>
<!-- 日志最大的历史 2天 -->
<maxHistory>7</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
<charset class="java.nio.charset.Charset">UTF-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤掉非ERROR级别,只打印ERROR日志 -->
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
</appender>
<!-- info日志 appender -->
<appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>./logs/info/LinkManagerAPP_info_console.log</file>
<append>true</append>
<!-- 按天回滚 daily -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>./logs/info/LinkManagerAPP_%d{yyyy-MM-dd_HH}_INFO</fileNamePattern>
<!-- 日志最大的历史 2 -->
<maxHistory>7</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
<charset class="java.nio.charset.Charset">UTF-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤掉非INFO级别,只打印INFO日志 -->
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
</appender>
<root level="DEBUG">
<appender-ref ref="STDOUT" />
<appender-ref ref="INFO" />
<appender-ref ref="ERROR" />
</root>
</configuration>
详解:
<pattern> :
%d{yyyy-MM-dd HH:mm:ss.SSS}——日志输出时间
%thread——输出日志的进程名字,这在Web应用以及异步任务处理中很有用
%-5level——日志级别,并且使用5个字符靠左对齐
%logger{36}——日志输出者的名字
%msg——日志消息
%n——平台的换行符
<appender> :
appender是configuration的子节点,是负责写日志的组件
<file> :
被写入的文件名,可以是相对目录 , 也可以是绝对目录 , 如果目录不存在则会自动创建
<append> :
如果是true , 日志被追加到文件结尾 , 如果是false,清空现存文件 , 默认是true
<rollingPolicy> :
当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名
<fileNamePattern> :
活动文件的名字会根据fileNamePattern的值,每隔一段时间改变一次
<maxHistory> :
每产生一个日志文件,该日志文件的保存期限
ConsoleAppender类 :
把日志输出到控制台
RollingFileAppender类 :
滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件
TimeBasedRollingPolicy类 :
最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责触发滚动
LevelFilter类 :
根据记录级别对记录事件进行过滤。
如果事件的级别等于配置的级别,过滤器会根据 onMatch 和 onMismatch 属性接受或拒绝事件
ThresholdFilter类 :
过滤掉低于指定临界值的事件。
当记录的级别等于或高于临界值时 , ThresholdFilter 的decide()方法会返回NEUTRAL;
当记录级别低于临界值时 , 事件会被拒绝