准備工作
環境:
1 windows 2 jdk 8 3 maven 3.0 4 IDEA
構建工程
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4 <modelVersion>4.0.0</modelVersion> 5 6 <parent> 7 <groupId>cn.zhangbox</groupId> 8 <artifactId>spring-boot-study</artifactId> 9 <version>1.0-SNAPSHOT</version> 10 </parent> 11 12 <groupId>cn.zhangbox</groupId> 13 <artifactId>spring-boot-log</artifactId> 14 <version>0.0.1-SNAPSHOT</version> 15 <packaging>jar</packaging> 16 17 <name>spring-boot-logging</name> 18 <description>Demo project for Spring Boot</description> 19 20 <properties> 21 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 22 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 23 <java.version>1.8</java.version> 24 </properties> 25 26 <dependencies> 27 <dependency> 28 <groupId>org.springframework.boot</groupId> 29 <artifactId>spring-boot-starter-web</artifactId> 30 </dependency> 31 32 <dependency> 33 <groupId>org.springframework.boot</groupId> 34 <artifactId>spring-boot-starter-test</artifactId> 35 <scope>test</scope> 36 </dependency> 37 </dependencies> 38 39 <build> 40 <plugins> 41 <plugin> 42 <groupId>org.springframework.boot</groupId> 43 <artifactId>spring-boot-maven-plugin</artifactId> 44 </plugin> 45 </plugins> 46 </build> 47 48 </project>
修改YML配置
1 #選擇哪一個環境的配置 2 #這里可以在每個環境配置redis,數據庫(mysql),消息(kafka)等相關的組件的配置 3 spring: 4 profiles: 5 active: dev 6 7 #文檔塊區分為三個--- 8 --- 9 server: 10 port: 8081 11 spring: 12 profiles: dev 13 #日志 14 logging: 15 #日志配置文件位置 16 config: classpath:log/logback.xml 17 #日志打印位置,這里是默認在項目根路徑下 18 path: log/spring-boot-log 19 20 #文檔塊區分為三個--- 21 --- 22 server: 23 port: 8082 24 spring: 25 profiles: test 26 #日志 27 logging: 28 #日志配置文件位置 29 config: classpath:log/logback.xml 30 #日志打印位置,這里是默認在項目根路徑下 31 path: usr/spring-boot/log/spring-boot-log 32 33 #文檔塊區分為三個--- 34 --- 35 server: 36 port: 8083 37 spring: 38 profiles: prod 39 #日志 40 logging: 41 #日志配置文件位置 42 config: classpath:log/logback.xml 43 #日志打印位置,這里是默認在項目根路徑下 44 path: usr/spring-boot/log/spring-boot-log
創建日志配置文件
在工程resources
文件夾下新建文件夾log
,並在該文件夾下創建logback.xml
文件,加入以下配置:
1 <!-- Logback configuration. See http://logback.qos.ch/manual/index.html --> 2 <configuration scan="true" scanPeriod="10 seconds"> 3 <!--繼承spring boot提供的logback配置--> 4 <!--<include resource="org/springframework/boot/logging/logback/base.xml" />--> 5 6 <!--設置系統日志目錄--> 7 <property name="APP_DIR" value="spring-boot-log"/> 8 9 <!-- 彩色日志 --> 10 <!-- 彩色日志依賴的渲染類 --> 11 <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/> 12 <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/> 13 <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/> 14 <!-- 彩色日志格式 --> 15 <property name="CONSOLE_LOG_PATTERN" 16 value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/> 17 18 <!-- 控制台輸出 --> 19 <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> 20 <encoder> 21 <Pattern>${CONSOLE_LOG_PATTERN}</Pattern> 22 <charset>UTF-8</charset> <!-- 此處設置字符集 --> 23 </encoder> 24 <!--此日志appender是為開發使用,只配置最底級別,控制台輸出的日志級別是大於或等於此級別的日志信息--> 25 <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> 26 <level>debug</level> 27 </filter> 28 </appender> 29 30 <!-- 時間滾動輸出 level為 DEBUG 日志 --> 31 <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 32 <!-- 正在記錄的日志文件的路徑及文件名 --> 33 <file>${LOG_PATH}/log_debug.log</file> 34 <!--日志文件輸出格式--> 35 <encoder> 36 <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> 37 <charset>UTF-8</charset> <!-- 此處設置字符集 --> 38 </encoder> 39 <!-- 日志記錄器的滾動策略,按日期,按大小記錄 --> 40 <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 41 <!-- 42 歸檔的日志文件的路徑,例如今天是2017-04-26日志,當前寫的日志文件路徑為file節點指定,可以將此文件與file指定文件路徑設置為不同路徑,從而將當前日志文件或歸檔日志文件置不同的目錄。 43 而2017-04-26的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 44 --> 45 <fileNamePattern>${LOG_PATH}/debug/log-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern> 46 <!-- 47 除按日志記錄之外,還配置了日志文件不能超過500M,若超過500M,日志文件會以索引0開始, 48 命名日志文件,例如log-error-2017-04-26.0.log 49 --> 50 <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 51 <maxFileSize>500MB</maxFileSize> 52 </timeBasedFileNamingAndTriggeringPolicy> 53 <!--日志文件保留天數--> 54 <maxHistory>30</maxHistory> 55 </rollingPolicy> 56 <!-- 此日志文件只記錄debug級別的 --> 57 <filter class="ch.qos.logback.classic.filter.LevelFilter"> 58 <level>debug</level> 59 <onMatch>ACCEPT</onMatch> 60 <onMismatch>DENY</onMismatch> 61 </filter> 62 </appender> 63 64 <!-- 時間滾動輸出 level為 INFO 日志 --> 65 <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 66 <!-- 正在記錄的日志文件的路徑及文件名 --> 67 <file>${LOG_PATH}/log_info.log</file> 68 <!--日志文件輸出格式--> 69 <encoder> 70 <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> 71 <charset>UTF-8</charset> <!-- 此處設置字符集 --> 72 </encoder> 73 <!-- 日志記錄器的滾動策略,按日期,按大小記錄 --> 74 <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 75 <!-- 76 歸檔的日志文件的路徑,例如今天是2017-04-26日志,當前寫的日志文件路徑為file節點指定,可以將此文件與file指定文件路徑設置為不同路徑,從而將當前日志文件或歸檔日志文件置不同的目錄。 77 而2017-04-26的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 78 --> 79 <fileNamePattern>${LOG_PATH}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern> 80 <!-- 81 除按日志記錄之外,還配置了日志文件不能超過500M,若超過500M,日志文件會以索引0開始, 82 命名日志文件,例如log-error-2017-04-26.0.log 83 --> 84 <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 85 <maxFileSize>500MB</maxFileSize> 86 </timeBasedFileNamingAndTriggeringPolicy> 87 <!--日志文件保留天數--> 88 <maxHistory>30</maxHistory> 89 </rollingPolicy> 90 <!-- 此日志文件只記錄info級別的 --> 91 <filter class="ch.qos.logback.classic.filter.LevelFilter"> 92 <level>info</level> 93 <onMatch>ACCEPT</onMatch> 94 <onMismatch>DENY</onMismatch> 95 </filter> 96 </appender> 97 98 <!-- 時間滾動輸出 level為 WARN 日志 --> 99 <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 100 <!-- 正在記錄的日志文件的路徑及文件名 --> 101 <file>${LOG_PATH}/log_warn.log</file> 102 <!--日志文件輸出格式--> 103 <encoder> 104 <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> 105 <charset>UTF-8</charset> <!-- 此處設置字符集 --> 106 </encoder> 107 <!-- 日志記錄器的滾動策略,按日期,按大小記錄 --> 108 <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 109 <!-- 110 歸檔的日志文件的路徑,例如今天是2017-04-26日志,當前寫的日志文件路徑為file節點指定,可以將此文件與file指定文件路徑設置為不同路徑,從而將當前日志文件或歸檔日志文件置不同的目錄。 111 而2017-04-26的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 112 --> 113 <fileNamePattern>${LOG_PATH}/warn/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern> 114 <!-- 115 除按日志記錄之外,還配置了日志文件不能超過500M,若超過500M,日志文件會以索引0開始, 116 命名日志文件,例如log-error-2017-04-26.0.log 117 --> 118 <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 119 <maxFileSize>500MB</maxFileSize> 120 </timeBasedFileNamingAndTriggeringPolicy> 121 <!--日志文件保留天數--> 122 <maxHistory>30</maxHistory> 123 </rollingPolicy> 124 <!-- 此日志文件只記錄warn級別的 --> 125 <filter class="ch.qos.logback.classic.filter.LevelFilter"> 126 <level>warn</level> 127 <onMatch>ACCEPT</onMatch> 128 <onMismatch>DENY</onMismatch> 129 </filter> 130 </appender> 131 132 <!-- 時間滾動輸出 level為 ERROR 日志 --> 133 <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 134 <!-- 正在記錄的日志文件的路徑及文件名 --> 135 <file>${LOG_PATH}/log_error.log</file> 136 <!--日志文件輸出格式--> 137 <encoder> 138 <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> 139 <charset>UTF-8</charset> <!-- 此處設置字符集 --> 140 </encoder> 141 <!-- 日志記錄器的滾動策略,按日期,按大小記錄 --> 142 <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 143 <!-- 144 歸檔的日志文件的路徑,例如今天是2017-04-26日志,當前寫的日志文件路徑為file節點指定,可以將此文件與file指定文件路徑設置為不同路徑,從而將當前日志文件或歸檔日志文件置不同的目錄。 145 而2017-04-26的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 146 --> 147 <fileNamePattern>${LOG_PATH}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern> 148 <!-- 149 除按日志記錄之外,還配置了日志文件不能超過500M,若超過500M,日志文件會以索引0開始, 150 命名日志文件,例如log-error-2017-04-26.0.log 151 --> 152 <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 153 <maxFileSize>500MB</maxFileSize> 154 </timeBasedFileNamingAndTriggeringPolicy> 155 <!--日志文件保留天數--> 156 <maxHistory>30</maxHistory> 157 </rollingPolicy> 158 <!-- 此日志文件只記錄ERROR級別的 --> 159 <filter class="ch.qos.logback.classic.filter.LevelFilter"> 160 <level>error</level> 161 <onMatch>ACCEPT</onMatch> 162 <onMismatch>DENY</onMismatch> 163 </filter> 164 </appender> 165 166 <logger name="org.springframework.web" level="info"/> 167 <logger name="org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor" level="INFO"/> 168 <logger name="cn.zhangbox.springboot" level="debug"/> 169 170 <!--開發環境:打印控制台--> 171 <springProfile name="dev"> 172 <root level="info"> 173 <appender-ref ref="CONSOLE"/> 174 <appender-ref ref="DEBUG_FILE"/> 175 <appender-ref ref="INFO_FILE"/> 176 <appender-ref ref="WARN_FILE"/> 177 <appender-ref ref="ERROR_FILE"/> 178 </root> 179 </springProfile> 180 181 <!--測試環境:打印控制台和輸出到文件--> 182 <springProfile name="test"> 183 <root level="info"> 184 <appender-ref ref="CONSOLE"/> 185 <appender-ref ref="INFO_FILE"/> 186 <appender-ref ref="WARN_FILE"/> 187 <appender-ref ref="ERROR_FILE"/> 188 </root> 189 </springProfile> 190 191 <!--生產環境:輸出到文件--> 192 <springProfile name="prod"> 193 <root level="error"> 194 <appender-ref ref="CONSOLE"/> 195 <appender-ref ref="DEBUG_FILE"/> 196 <appender-ref ref="INFO_FILE"/> 197 <appender-ref ref="ERROR_FILE"/> 198 </root> 199 </springProfile> 200 201 </configuration>
注意:loback
配置文件中
1 <logger name="cn.zhangbox.springboot" level="debug"/>
name
的屬性值一定要是當前工程的java
代碼的完整目錄,因為mybatis
打印的日志級別是debug
級別的,因此需要配置debug
級別日志掃描的目錄。