logback.xml模板詳解

  1 <?xml version="1.0" encoding="UTF-8"?>
  2 
  3 <!-- 配置文件每隔1分鐘,就檢查更新 -->
  4 <configuration scan="true" scanPeriod="60 seconds" debug="false" >
  5     <!-- 定義參數常量,便於後面直接用${name}來獲取value值 -->
  6     <property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%-5level] %logger{50} - %msg%n"/>
  7     <property name="log.filePath" value="${catalina.base}/logs/webapps"/>
  8     <property name="log.maxHistory" value="30"/>
  9 
 10     <!-- ch.qos.logback.core.ConsoleAppender 控制檯輸出 -->
 11     <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
 12         <!-- 過去使用layout,如今都推薦使用encoder
 13              做用一:將日誌信息轉換(格式化)爲字符串
 14              做用二:而後寫入到文件中-->
 15         <encoder>
 16             <pattern>${log.pattern}</pattern>
 17         </encoder>
 18     </appender>
 19 
 20     <!-- ch.qos.logback.core.rolling.RollingFileAppender 文件日誌輸出到文件 -->
 21     <!-- 1.打印debug級別日誌的設置 -->
 22     <appender name="debugAppender"
 23               class="ch.qos.logback.core.rolling.RollingFileAppender">
 24         <!-- 例如當天,也就是今天是2019-2-19,那麼在這天生成的日誌文件路徑爲${log.filePath}/debug.log
 25              接着到了明天,也就是2019-2-20,這天生成的日誌文件路徑爲${log.filePath}/debug.log,
 26              但昨天2019-2-19,生成的日誌文件路徑就變爲${log.filePath}/debug/debug-2019-2-19.log.gz(壓縮文件) -->
 27 
 28         <!-- 當天生成的日誌文件的路徑 -->
 29         <file>${log.filePath}/debug.log</file>
 30         <!-- 設置基於時間(天天)的滾動策略,也就是將日誌內容按照日期來寫入到相應的文件中-->
 31         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
 32             <!-- 當天以前的天天生成的日誌文件的路徑 -->
 33             <fileNamePattern>${log.filePath}/debug/debug-%d{yyyy-MM-dd}.log.gz
 34             </fileNamePattern>
 35             <!-- 最大歷史保存文件的數量,只保存最近30天的日誌文件,超出的會被刪除-->
 36             <maxHistory>${log.maxHistory}</maxHistory>
 37         </rollingPolicy>
 38         <!-- 過去使用layout,如今都推薦使用encoder
 39              做用一:將日誌信息轉換(格式化)爲字符串
 40              做用二:而後寫入到文件中-->
 41         <encoder>
 42             <pattern>${log.pattern}</pattern>
 43         </encoder>
 44         <!-- 過濾掉非debug級別的信息 -->
 45         <filter class="ch.qos.logback.classic.filter.LevelFilter">
 46             <level>debug</level>
 47             <onMatch>ACCEPT</onMatch>
 48             <!-- 做用是拒絕寫入全部與<level>不匹配的日誌信息,
 49             也就是非debug級別的日誌信息都不會被寫入到日誌文件中 -->
 50             <onMismatch>DENY</onMismatch>
 51         </filter>
 52     </appender>
 53 
 54     <!-- 2.打印info級別日誌的設置 -->
 55     <appender name="infoAppender"
 56               class="ch.qos.logback.core.rolling.RollingFileAppender">
 57         <!-- 例如當天,也就是今天是2019-2-19,那麼在這天生成的日誌文件路徑爲${log.filePath}/info.log
 58              接着到了明天,也就是2019-2-20,這天生成的日誌文件路徑爲${log.filePath}/info.log,
 59              但昨天2019-2-19,生成的日誌文件路徑就變爲${log.filePath}/info/info-2019-2-19.log.gz(壓縮文件) -->
 60 
 61         <!-- 當天生成的日誌文件的路徑 -->
 62         <file>${log.filePath}/info.log</file>
 63         <!-- 設置基於時間(天天)的滾動策略,也就是將日誌內容按照日期來寫入到相應的文件中-->
 64         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
 65             <!-- 當天以前的天天生成的日誌文件的路徑 -->
 66             <fileNamePattern>${log.filePath}/info/info-%d{yyyy-MM-dd}.log.gz
 67             </fileNamePattern>
 68             <!-- 最大歷史保存文件的數量,只保存最近30天的日誌文件,超出的會被刪除-->
 69             <maxHistory>${log.maxHistory}</maxHistory>
 70         </rollingPolicy>
 71         <!-- 過去使用layout,如今都推薦使用encoder
 72              做用一:將日誌信息轉換(格式化)爲字符串
 73              做用二:而後寫入到文件中-->
 74         <encoder>
 75             <pattern>${log.pattern}</pattern>
 76         </encoder>
 77         <!-- 過濾掉非info級別的信息 -->
 78         <filter class="ch.qos.logback.classic.filter.LevelFilter">
 79             <level>info</level>
 80             <onMatch>ACCEPT</onMatch>
 81             <!-- 做用是拒絕寫入全部與<level>不匹配的日誌信息,
 82             也就是非info級別的日誌信息都不會被寫入到日誌文件中 -->
 83             <onMismatch>DENY</onMismatch>
 84         </filter>
 85     </appender>
 86 
 87     <!-- 3.打印error級別日誌的設置 -->
 88     <appender name="errorAppender"
 89               class="ch.qos.logback.core.rolling.RollingFileAppender">
 90         <!-- 例如當天,也就是今天是2019-2-19,那麼在這天生成的日誌文件路徑爲${log.filePath}/error.log
 91              接着到了明天,也就是2019-2-20,這天生成的日誌文件路徑爲${log.filePath}/error.log,
 92              但昨天2019-2-19,生成的日誌文件路徑就變爲${log.filePath}/error/error-2019-2-19.log.gz(壓縮文件) -->
 93 
 94         <!-- 當天生成的日誌文件的路徑 -->
 95         <file>${log.filePath}/error.log</file>
 96         <!-- 設置基於時間(天天)的滾動策略,也就是將日誌內容按照日期來寫入到相應的文件中-->
 97         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
 98             <!-- 當天以前的天天生成的日誌文件的路徑 -->
 99             <fileNamePattern>${log.filePath}/error/error-%d{yyyy-MM-dd}.log.gz
100             </fileNamePattern>
101             <!-- 最大歷史保存文件的數量,只保存最近30天的日誌文件,超出的會被刪除-->
102             <maxHistory>${log.maxHistory}</maxHistory>
103         </rollingPolicy>
104         <!-- 過去使用layout,如今都推薦使用encoder
105              做用一:將日誌信息轉換(格式化)爲字符串
106              做用二:而後寫入到文件中-->
107         <encoder>
108             <pattern>${log.pattern}</pattern>
109         </encoder>
110         <!-- 過濾掉非error級別的信息 -->
111         <filter class="ch.qos.logback.classic.filter.LevelFilter">
112             <level>error</level>
113             <onMatch>ACCEPT</onMatch>
114             <!-- 做用是拒絕寫入全部與<level>不匹配的日誌信息,
115             也就是非error級別的日誌信息都不會被寫入到日誌文件中 -->
116             <onMismatch>DENY</onMismatch>
117         </filter>
118     </appender>
119 
120     <!-- 監聽com.imooc.o2o包下全部類產生的日誌信息
121         不設置additivity屬性,那麼默認additivity = true,表示會繼承父級(在這裏它的父級只有root一個),
122         也就是會將日誌信息也輸出在控制檯,但級別會覆蓋父級的級別,也就是在控制檯會輸出debug級別及以上的日誌信息 -->
123     <logger name="com.imooc.o2o" level="debug">
124         <!-- 表示按照debugAppender的設置去打印日誌 -->
125         <appender-ref ref="debugAppender"/>
126         <!-- 表示按照infoAppender的設置去打印日誌 -->
127         <appender-ref ref="infoAppender"/>
128         <!-- 表示按照errorAppender的設置去打印日誌 -->
129         <appender-ref ref="errorAppender"/>
130     </logger>
131 
132     <!-- 也是一種<logger>,是全部<logger>的父級 -->
133     <!-- 不設置additivity屬性,或者設置additivity = true的<logger>,會繼承root的子標籤<appender-ref ref="console" />的設置,
134         將它本身設置的level屬性級別及以上的日誌打印到控制檯 -->
135     <root level="info">
136         <!-- 表示按照console的設置去輸出日誌到控制檯 -->
137         <appender-ref ref="console" />
138     </root>
139 
140 
141 
142 </configuration>

注意:web

1. ${catalina.base}表示tomcat的工做目錄,具體的路徑能夠經過如下兩種方式

   a.Tomcat啓動時,控制檯最早打印的信息中,在前幾行會看到 catalina.base ,它後面的路徑就是當前項目的tomcat的工做目錄
  b.通常都在此目錄中能夠找到全部已部署項目的Tomcat的工做目錄:
C:\Users\0(這是電腦的本機帳號)\
.IntelliJIdea2018.2(這是Tomcat集成的IDE工具,我使用的是IDEA)\
system\tomcat\Unnamed_o2o
(項目名)

2. logback.xml文件的目錄位置

maven項目,請放在classpath下,也就是src/main/resource文件夾下,不然系統解析不到logback.xml文件

3. 須要的jar包

1 <!--日誌logback,默認scope是compile,也就是從編譯時就起做用了-->
2     <!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
3     <dependency>
4       <groupId>ch.qos.logback</groupId>
5       <artifactId>logback-classic</artifactId>
6       <version>1.2.3</version>
7     </dependency>
相關文章
相關標籤/搜索