gradle 构建的 Spring Boot 使用 logback
文章讲的是配置和使用,入门请看文档先。
what
目的: 可以实现log不同级别的日志记录,例如info 在一个文件夹内,另一个级别的在另一个文件夹内。
how
配置依赖项
1 //log 2 compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25' 3 compile group: 'ch.qos.logback', name: 'logback-core', version: '1.2.3'
编写配置文件
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!--<configuration scan="true" scanPeriod="60 seconds" >--> 3 <configuration > 4 5 <!--<!– 动态日志级别 –>--> 6 <!--<jmxConfigurator/>--> 7 <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径--> 8 <property name="LOG_HOME" value="D:\Log"/> 9 <property name="log.level" value="debug"/> 10 <property name="log.maxHistory" value="30"/> 11 12 <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> 13 <encoder> 14 <pattern>%black(Console ) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{10}) %cyan(%message%n) 15 </pattern> 16 </encoder> 17 </appender> 18 19 20 <!-- ERROR级别日志 --> 21 <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 RollingFileAppender --> 22 <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> 23 <!-- 过滤器,只记录WARN级别的日志 --> 24 <!-- 果日志级别等于配置级别,过滤器会根据onMath 和 onMismatch接收或拒绝日志。 --> 25 <filter class="ch.qos.logback.classic.filter.LevelFilter"> 26 <!-- 设置过滤级别 --> 27 <level>ERROR</level> 28 <!-- 用于配置符合过滤条件的操作 --> 29 <onMatch>ACCEPT</onMatch> 30 <!-- 用于配置不符合过滤条件的操作 --> 31 <onMismatch>DENY</onMismatch> 32 </filter> 33 <!-- 最常用的滚动策略,它根据时间来制定滚动策略.既负责滚动也负责触发滚动 --> 34 <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 35 <!--日志输出位置 可以是相对和绝对路径 --> 36 <fileNamePattern> 37 ${LOG_HOME}/error/%d{yyyy-MM-dd}/%i.log 38 </fileNamePattern> 39 <!-- 可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件假设设置每个月滚动,且<maxHistory>是6, 则只保存最近6个月的文件,删除之前的旧文件。注意,删除旧文件是,那些为了归档而创建的目录也会被删除 --> 40 <maxHistory>${log.maxHistory}</maxHistory> 41 <TimeBasedFileNamingAndTriggeringPolicy 42 class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 43 <!-- 单个log文件超过该大小就会重新建一个log文件-/> --> 44 <MaxFileSize>2MB</MaxFileSize> 45 </TimeBasedFileNamingAndTriggeringPolicy> 46 </rollingPolicy> 47 <encoder> 48 <pattern> 49 <!-- 设置日志输出格式 --> 50 %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n 51 </pattern> 52 </encoder> 53 </appender> 54 55 56 <!-- WARN级别日志 appender --> 57 <appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender"> 58 <!-- 过滤器,只记录WARN级别的日志 --> 59 <!-- 果日志级别等于配置级别,过滤器会根据onMath 和 onMismatch接收或拒绝日志。 --> 60 <filter class="ch.qos.logback.classic.filter.LevelFilter"> 61 <!-- 设置过滤级别 --> 62 <level>WARN</level> 63 <!-- 用于配置符合过滤条件的操作 --> 64 <onMatch>ACCEPT</onMatch> 65 <!-- 用于配置不符合过滤条件的操作 --> 66 <onMismatch>DENY</onMismatch> 67 </filter> 68 <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 69 <!--日志输出位置 可相对、和绝对路径 --> 70 <fileNamePattern>${LOG_HOME}/warn/%d{yyyy-MM-dd}/%i.log</fileNamePattern> 71 <maxHistory>${log.maxHistory}</maxHistory> 72 <TimeBasedFileNamingAndTriggeringPolicy 73 class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 74 <MaxFileSize>2MB</MaxFileSize> 75 </TimeBasedFileNamingAndTriggeringPolicy> 76 </rollingPolicy> 77 <encoder> 78 <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> 79 </encoder> 80 </appender> 81 82 83 <!-- INFO级别日志 appender --> 84 <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender"> 85 <filter class="ch.qos.logback.classic.filter.LevelFilter"> 86 <level>INFO</level> 87 <onMatch>ACCEPT</onMatch> 88 <onMismatch>DENY</onMismatch> 89 </filter> 90 <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 91 <fileNamePattern>${LOG_HOME}/info/%d{yyyy-MM-dd}/%i.log</fileNamePattern> 92 <maxHistory>${log.maxHistory}</maxHistory> 93 <TimeBasedFileNamingAndTriggeringPolicy 94 class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 95 <MaxFileSize>2MB</MaxFileSize> 96 </TimeBasedFileNamingAndTriggeringPolicy> 97 </rollingPolicy> 98 <encoder> 99 <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> 100 </encoder> 101 </appender> 102 103 104 <!-- DEBUG级别日志 appender --> 105 <appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender"> 106 <filter class="ch.qos.logback.classic.filter.LevelFilter"> 107 <level>DEBUG</level> 108 <onMatch>ACCEPT</onMatch> 109 <onMismatch>DENY</onMismatch> 110 </filter> 111 <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 112 <fileNamePattern>${LOG_HOME}/debug/%d{yyyy-MM-dd}/%i.log</fileNamePattern> 113 <maxHistory>${log.maxHistory}</maxHistory> 114 <TimeBasedFileNamingAndTriggeringPolicy 115 class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 116 <MaxFileSize>2MB</MaxFileSize> 117 </TimeBasedFileNamingAndTriggeringPolicy> 118 </rollingPolicy> 119 <encoder> 120 <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> 121 </encoder> 122 </appender> 123 124 125 <!-- TRACE级别日志 appender --> 126 <appender name="TRACE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 127 <filter class="ch.qos.logback.classic.filter.LevelFilter"> 128 <level>TRACE</level> 129 <onMatch>ACCEPT</onMatch> 130 <onMismatch>DENY</onMismatch> 131 </filter> 132 <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 133 <fileNamePattern>${LOG_HOME}/trace/%d{yyyy-MM-dd}/%i.log</fileNamePattern> 134 <maxHistory>${log.maxHistory}</maxHistory> 135 <TimeBasedFileNamingAndTriggeringPolicy 136 class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 137 <MaxFileSize>2MB</MaxFileSize> 138 </TimeBasedFileNamingAndTriggeringPolicy> 139 </rollingPolicy> 140 <encoder> 141 <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n</pattern> 142 </encoder> 143 </appender> 144 <!--//原文:https://blog.csdn.net/zzzgd_666/article/details/80458444--> 145 146 147 <!--日志输出级别--> 148 <!--级别:--> 149 <!--trace-debug-info-warn-error-fetal--> 150 <!-- root级别 DEBUG --> 151 <root> 152 <!-- 打印debug级别日志及以上级别日志 --> 153 <level value="${log.level}"/> 154 <!-- 控制台输出 --> 155 <appender-ref ref="console"/> 156 <!-- 文件输出 --> 157 <appender-ref ref="ERROR"/> 158 <appender-ref ref="INFO"/> 159 <appender-ref ref="WARN"/> 160 <appender-ref ref="DEBUG"/> 161 <appender-ref ref="TRACE"/> 162 </root> 163 164 </configuration>
appender 代表的是日志记录器,表示使用何种方式来记录日志, 上面有两个,一种是 console 控制台方式的,一个是以滚动文件的形式来记录文件。
当记录的文件超过一定大小时就会创建新的文件,filter 就是过滤器,会过滤某一种级别的日志。root 元素类有个level 的子元素指定要记录何种级别的日志。
使用
1 public class LogUtil { 2 public static Logger getLogger(Class class1){ 3 Logger logger = LoggerFactory.getLogger(class1); 4 return logger; 5 } 6 7 } 8