SpringBoot多環(huán)境下集成logback的配置指南
Logback是由log4j創(chuàng)始人設計的又一個開源日志組件??捎糜陧椖咳罩竟δ堋?/p>
第1步:添加坐標依賴
<!--logback--> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.4.14</version> </dependency>
logback里依賴了slf4j,就不用單獨添加slf4j坐標了

第2步:創(chuàng)建logback配置文件
在resources目錄下創(chuàng)建logback文件夾,并創(chuàng)建dev.xml,pro.xml兩個配置文件,用于配置開發(fā)環(huán)境和生產(chǎn)環(huán)境的logback配置。目錄結構像這樣:

第3步:在application.yaml中根據(jù)運行環(huán)境讀取logback配置
#日志配置
logging:
config: classpath:logback/${spring.profiles.active}.xml #根據(jù)運行環(huán)境讀取日志配置第4步:配置logback/dev.xml文件(開發(fā)環(huán)境的日志配置)
開發(fā)環(huán)境中,可以將日志打印在控制臺。
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!-- 設置控制臺彩色日志格式,注意:%L打印行號對性能有影響,因此不建議在生產(chǎn)環(huán)境使用。 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
<conversionRule conversionWord="wEx"
converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
<property name="CONSOLE_LOG_PATTERN"
value="%clr([%d{HH:mm:ss}){faint} %clr(%p) %clr(%.10t]){faint} %clr(%C{39}){cyan} %clr(%M:%L){magenta}: %m%n%wEx"/>
<!--設置輸出到控制臺-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder" charset="UTF-8">
<!-- 設置輸出到控制臺的日志格式 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<!--設置日志級別-->
<root level="INFO">
<appender-ref ref="CONSOLE"/>
</root>
</configuration>
第5步:配置logback/pro.xml文件(生成環(huán)境的日志配置)
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!-- 應用名稱 -->
<springProperty scope="context" name="springApplicationName" source="spring.application.name"
defaultValue="spring"/>
<!-- 環(huán)境 -->
<springProperty scope="context" name="springProfilesActive" source="spring.profiles.active" defaultValue="pro"/>
<!-- 重啟后是否刪除日志 -->
<springProperty scope="context" name="cleanHistoryOnStart"
source="logging.logback.rollingpolicy.clean-history-on-start" defaultValue="true"/>
<!-- 單個日志文件的大小 -->
<springProperty scope="context" name="maxFileSize" source="logging.logback.rollingpolicy.max-file-size"
defaultValue="10MB"/>
<!-- 日志總文件最大值 -->
<springProperty scope="context" name="totalSizeCap" source="logging.logback.rollingpolicy.total-size-cap"
defaultValue="50GB"/>
<!-- 日志保留時長 (天) -->
<springProperty scope="context" name="maxHistory" source="logging.logback.rollingpolicy.max-history"
defaultValue="30"/>
<!-- 日志文件路徑 -->
<springProperty scope="context" name="path" source="logging.file.path"
defaultValue="./log/${springApplicationName}/${springProfilesActive}"/>
<contextName>${springApplicationName}</contextName>
<property name="PATTERN_FILE" value="%d{yyyy/MM/dd-HH:mm:ss} %-5level [%thread] %class{5}:%line>>%msg%n"/>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${path}/%d{yyyy-MM-dd}/%i.log</fileNamePattern>
<totalSizeCap>${totalSizeCap}</totalSizeCap>
<maxHistory>${maxHistory}</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>${maxFileSize}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!-- 重啟項目后刪除日志 -->
<cleanHistoryOnStart>${cleanHistoryOnStart}</cleanHistoryOnStart>
</rollingPolicy>
<encoder>
<pattern>${PATTERN_FILE}</pattern>
</encoder>
</appender>
<!--設置日志級別-->
<root level="WARN">
<appender-ref ref="FILE"/>
</root>
</configuration>
第6步:測試日志輸出
在Controller中編寫測試代碼:
import ch.qos.logback.classic.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/")
public class HomeController {
private static final Logger logger = (Logger) LoggerFactory.getLogger(HomeController.class);
@GetMapping("/")
public String index() {
logger.debug("【Debug】- Hello.");
logger.info("【Info】- Hello.");
logger.warn("【W(wǎng)arn】- Hello.");
logger.error("【Error】- Hello.");
return "index";
}
}1.測試開發(fā)環(huán)境
在application.yaml文件中,配置:
spring:
profiles:
active: dev運行項目,訪問對應的地址,即可看到控制臺日志輸出:

2.測試生產(chǎn)環(huán)境
在application.yaml文件中,配置:
spring:
profiles:
active: pro運行項目,訪問對應的地址,即可看到對應目錄下的日志輸出:

這個日志存放路徑,可以根據(jù)logback/pro.xml中fileNamePattern配置。
第7步:關閉logback啟動日志(可選)
使用logback啟動的時候總是會出現(xiàn)很多啟動日志,但是很多時候卻完全不需要這些日志,此時就會想到關閉這些日志。

只需要按照如下在logback.xml里面增加一行配置即可關閉logback啟動時的一堆日志。
<configuration debug="false">
<statusListener class="ch.qos.logback.core.status.NopStatusListener" />
...
<configuration>以上就是SpringBoot多環(huán)境下集成logback的配置指南的詳細內(nèi)容,更多關于SpringBoot集成logback的資料請關注腳本之家其它相關文章!
相關文章
springboot連接redis并動態(tài)切換database的實現(xiàn)方法
這篇文章主要介紹了springboot連接redis并動態(tài)切換database,本文主為通過修改ConnectionFactory從而達到動態(tài)切換database的效果,結合示例代碼給大家介紹的非常詳細,需要的朋友可以參考下2022-03-03
Java實現(xiàn)JDBC連接數(shù)據(jù)庫簡單案例
這篇文章主要介紹了Java實現(xiàn)JDBC連接數(shù)據(jù)庫簡單案例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08
Java編程redisson實現(xiàn)分布式鎖代碼示例
這篇文章主要介紹了Java編程redisson實現(xiàn)分布式鎖代碼示例,小編覺得還是比較不錯的,這里給大家分享下,供需要的朋友參考。2017-10-10

