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 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM