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     <!--&lt;!&ndash; 动态日志级别 &ndash;&gt;-->
  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 

猜你喜欢

转载自www.cnblogs.com/Benjious/p/9877218.html