springboot2.0 @Slf4j log 日誌配置 輸出到檔案 彩色日誌
阿新 • • 發佈:2018-11-10
今天做了個日誌記錄:
解決問題:
使用了springboot原生自帶的一個log框架
POM新增一個外掛(不然使用不了@Slf4j註解):
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.20</version> <scope>provided</scope> </dependency>
然後就是新增一個lombok外掛 (我使用的是IDEA, 其他的IDA可以自行搜尋安裝方法)
直接按快捷鍵Ctrl+Alt+s彈出Settings介面
因為我的已經安裝了 如果沒有安裝的話右邊會出現一個Install綠色按鈕 點選安裝即可 ,最後提示一下 安裝成功之後一定要重啟軟體
工具準備好之後就是一個配置了:在專案中的resource下新建一個logback-spring.xml檔案
<?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="10 seconds"> <contextName>logback</contextName> <!-- 格式化輸出:%date表示日期,%thread表示執行緒名,%-5level:級別從左顯示5個字元寬度 %msg:日誌訊息,%n是換行符--> <property name="LOG_PATTERN" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" /> <!-- 定義日誌儲存的路徑,不要配置相對路徑 --> <property name="FILE_PATH" value="D:/Desktop/log/spring-log.%d{yyyy-MM-dd}.%i.log" /> <!-- 控制檯輸出日誌 --> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <!-- 日誌級別過濾INFO以下 --> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>INFO</level> </filter> <encoder> <!-- 按照上面配置的LOG_PATTERN來列印日誌 --> <pattern>${LOG_PATTERN}</pattern> </encoder> </appender> <!--每天生成一個日誌檔案,儲存30天的日誌檔案。rollingFile用來切分檔案的 --> <appender name="rollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${FILE_PATH}</fileNamePattern> <!-- keep 15 days' worth of history --> <maxHistory>30</maxHistory> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!-- 日誌檔案的最大大小 --> <maxFileSize>2MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <!-- 超出刪除老檔案 --> <totalSizeCap>1GB</totalSizeCap> </rollingPolicy> <encoder> <pattern>${LOG_PATTERN}</pattern> </encoder> </appender> <!-- project default level --> <logger name="net.sh.rgface.serive" level="ERROR" /> <!-- 日誌輸出級別 --> <root level="INFO"> <appender-ref ref="console" /> <appender-ref ref="rollingFile" /> </root> </configuration>
配置檔案有很豐富的擴充套件,有興趣可以搜尋一下
配置完成之後差不就可以了
最後就是使用:
在使用的類上方新增@Slf4j註解,在使用時log.info()、log.error()、log.warn()等
執行專案之後會發現之前的日誌列印在控制檯上的是彩色,現在的都是白色了:其實也很好理解,因為配置檔案上面輸出的級別是INFO,就是說在INFO以上的都會被列印,就像是System.out.print()輸出一樣,輸出的都是白色的。如果需要彩色日誌的話可以修改一下logback-spring.xml檔案,在<contextName>logback</contextName>下新增:
<!-- 彩色日誌 -->
<!-- 彩色日誌依賴的渲染類 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
<!-- 彩色日誌格式 -->
<property name="CONSOLE_LOG_PATTERN" 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}}"/>
注意紅色部分
CONSOLE_LOG_PATTERN
修改為:注意修改的位置紅色部分
<!-- 控制檯輸出日誌 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!-- 日誌級別過濾INFO以下 -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<encoder>
<!-- 按照上面配置的LOG_PATTERN來列印日誌 -->
<pattern>${LOG_PATTERN}</pattern> //替換為${CONSOLE_LOG_PATTERN}
</encoder>
</appender>
在執行控制檯上沒有錯就會出現彩色日誌了
注:有問題可以評論哦 我看到就會回覆,有錯誤希望指出 謝謝