springboot中配置logback-spring.xml過程
更新時間:2026年05月09日 10:10:38 作者:m0_38011384
本文介紹了在SpringBoot中配置logback日志的基本步驟和配置元素,包括appender、root和logger的配置,以及如何根據(jù)不同環(huán)境配置不同的日志格式輸出
一、在src/main/resources目錄下
也就是在classpath路徑下創(chuàng)建logback-spring.xml
注:springboot框架自動配置,如果更換名稱,可在配置文件指定該文件即可
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="log_dir" value="${user.dir}/logs"/>
<!-- <property name="log_dir" value="D:/logs"/>-->
<!-- 控制臺輸出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{80} - %msg%n</pattern>
</encoder>
</appender>
<!-- info -->
<appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log_dir}/info.log</file>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log_dir}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory> <!-- 保留30天的日志 -->
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- info -->
<appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log_dir}/warn.log</file>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log_dir}/warn.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory> <!-- 保留30天的日志 -->
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- error -->
<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log_dir}/error.log</file>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log_dir}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory> <!-- 保留30天的日志 -->
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- 設(shè)置日志級別 -->
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="INFO" />
<appender-ref ref="ERROR"/>
<appender-ref ref="WARN"/>
</root>
<!-- <logger name="com.example.demo" level="ERROR">-->
<!-- <appender-ref ref="ERROR"/>-->
<!-- </logger>-->
<!-- <logger name="myservice" level="info"> example: LoggerFactory.getLogger("myservice")-->
<!-- <appender-ref ref="INFO"/>-->
<!-- </logger>-->
<!-- <logger name="com.example.demo.test.PDF2Img" level="info">-->
<!-- <appender-ref ref="INFO"/>-->
<!-- </logger>-->
</configuration>二、日志xml配置,根元素是:configuation
根元素下同級的主要配置元素有三個:
1.appender
- 該配置表明:希望日志通過什么樣的方式輸出,并且輸出到何處(比如控制臺、文件等)
2.root
- 該配置表明:配置日志根級別,也就是日志最低級別,如:debug<info<warn<error,日志級別越低,輸出范圍就廣。比如:配置root級別level=“info”,那么info以上的日志都能輸出,即info、warn和error都能打印輸出
3.logger
- 該配置表明:可以指定包、類或者自定義名稱,并配置級別,告訴日志此配置下的日志和級別輸出到指定的位置,如代碼所示。
- 可選屬性:property,可以定義參數(shù)名稱和值,方便appender中引用
三、根據(jù)不同環(huán)境配置不同的日志格式輸出
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 自定義屬性 -->
<property name="log_dir" value="${user.dir}/logs"/>
<!-- 控制臺輸出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{80}[line:%line]: %msg%n</pattern>
</encoder>
</appender>
<!-- info -->
<appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log_dir}/info.log</file>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log_dir}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory> <!-- 保留30天的日志 -->
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{80}[line:%line] - %msg%n</pattern>
</encoder>
</appender>
<!-- info -->
<appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log_dir}/warn.log</file>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log_dir}/warn.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory> <!-- 保留30天的日志 -->
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{80}[line:%line] - %msg%n</pattern>
</encoder>
</appender>
<!-- error -->
<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log_dir}/error.log</file>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log_dir}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory> <!-- 保留30天的日志 -->
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{80}[line:%line] - %msg%n</pattern>
</encoder>
</appender>
<!-- 設(shè)置開發(fā)環(huán)境日志級別 -->
<springProfile name="dev">
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</springProfile>
<!-- 設(shè)置測試環(huán)境日志級別 -->
<springProfile name="test">
<root level="INFO">
<appender-ref ref="INFO" />
<appender-ref ref="ERROR"/>
<appender-ref ref="WARN"/>
</root>
</springProfile>
<!-- 設(shè)置生產(chǎn)環(huán)境日志級別 -->
<springProfile name="prod">
<root level="INFO">
<appender-ref ref="INFO" />
<appender-ref ref="ERROR"/>
<appender-ref ref="WARN"/>
</root>
</springProfile>
<!-- <logger name="com.bdqn.assistant.utils" level="info">-->
<!-- <appender-ref ref="INFO"/> -->
<!-- </logger>-->
</configuration>如上配置:
- springProfile 這個標簽就是對應(yīng)spring.profiles.active屬性,
- name這個屬性值就是spring.profiles.active對應(yīng)的值,比如:dev、test、prod
- 依據(jù)這個環(huán)境標簽參數(shù),可以自由設(shè)置xml的各種標簽引用。
另外,可以對日志的樣式進行設(shè)置,后續(xù)補充?。?!
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot整合Kafka實現(xiàn)高可用消息隊列集群詳解
Apache?Kafka是一個分布式流處理平臺,這篇文章主要介紹了SpringBoot如何整合Kafka實現(xiàn)高可用消息隊列集群,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下2026-01-01
SpringBoot集成slf4j2日志配置的實現(xiàn)示例
本文主要介紹了SpringBoot集成slf4j2日志配置的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-08-08
Java如何獲取List<String>中的String詳解
工作了這么長時間了,一直沒有記錄的習(xí)慣,以至于導(dǎo)致我即便是查過的東西總會忘記,下面這篇文章主要給大家介紹了關(guān)于Java如何獲取List<String>中String的相關(guān)資料,需要的朋友可以參考下2022-02-02
java中Pulsar?InterruptedException?異常
這篇文章主要為大家介紹了java中Pulsar?InterruptedException?異常分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02

