文章講的是配置和使用,入門請看文檔先。
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