springboot如何使用logback-spring配置日志格式,并分環(huán)境配置
配置不生效的解決辦法
注意:如果配置不生效,則說明spring
優(yōu)先加載了其他配置:
解決辦法:
- 添加啟動參數(shù)
-Dlogging.config=classpath:logback-spring.xml
- 修改名字為
logback.xml
,SpringBoot
首先去查找標(biāo)準(zhǔn)的日志配置文件,如果找不到在去找拼接Spring的配置的文件, 標(biāo)準(zhǔn)文件名: "logback-test.groovy
", "logback-test.xml
", "logback.groovy
","logback.xml
" 等 - 排除 第三方j(luò)ar包中的日志配置
springboot
中使用這個LoggingApplicationListener
類進(jìn)行初始化,具體流程可查源碼
logback
以-spring
結(jié)尾的可以使用springboot
的分環(huán)境注入特性:
直接貼代碼,放到resource下面就行了:
<?xml version="1.0" encoding="UTF-8"?> <configuration debug="false"> <!-- logback-spring 的文件可以基于環(huán)境配置,相對路徑會默認(rèn)成項(xiàng)目根目錄開始 --> <springProfile name="comp"> <property name="LOG_HOME" value="/home/houzheng/logs"/> </springProfile> <!-- home環(huán)境,windows --> <springProfile name="home"> <property name="LOG_HOME" value="D:/logs"/> </springProfile> <!--控制臺輸出appender--> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <!--設(shè)置輸出格式--> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度%msg:日志消息,%n是換行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <!--設(shè)置編碼--> <charset>UTF-8</charset> </encoder> </appender> <!--文件輸出,時間窗口滾動--> <appender name="timeFileOutput" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!--日志名,指定最新的文件名,其他文件名使用FileNamePattern --> <File>${LOG_HOME}/timeFile/out.log</File> <!--文件滾動模式--> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--日志文件輸出的文件名,可設(shè)置文件類型為gz,開啟文件壓縮--> <FileNamePattern>${LOG_HOME}/timeFile/info.%d{yyyy-MM-dd}.%i.log</FileNamePattern> <!--日志文件保留天數(shù)--> <MaxHistory>30</MaxHistory> <!--按大小分割同一天的--> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>10MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <!--輸出格式--> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度%msg:日志消息,%n是換行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <!--設(shè)置編碼--> <charset>UTF-8</charset> </encoder> </appender> <!--指定基礎(chǔ)的日志輸出級別--> <root level="INFO"> <!--appender將會添加到這個loger--> <appender-ref ref="console"/> <appender-ref ref="timeFileOutput"/> </root> <!-- 單獨(dú)指定某個包的日志打印,級別,appender等 --> <!-- addtivity: 可選。是否向上級 loger(也就是 root 節(jié)點(diǎn))傳遞打印信息。默認(rèn)為 true, 設(shè)置addtivity是因?yàn)檫@里已經(jīng)指定了appender,如果再向上傳遞就會被root下的appender再次打印 --> <!-- <logger name="com.hou.postgresql.user.service.impl.TestUserServiceImpl" level="WARN" addtivity="false">--> <!-- <appender-ref ref="console"/>--> <!-- </logger>--> <!-- 單獨(dú)指定某個包的日志打印,級別,appender等,也可以在代碼中使用 name屬性獲取 LoggerFactory.getLogger("LogName"); --> <logger name="AudiLogNameFormat" level="info" additivity="false"> <appender-ref ref="Log"/> </logger> </configuration>
Springboot項(xiàng)目下的logback.xml
直接上模板,其中有注釋,在現(xiàn)有的項(xiàng)目里拷出來的。
<configuration> <!-- %m輸出的信息,%p日志級別,%t線程名,%d日期,%c類的全名,,,, --> <!-- 定義一個控制臺輸出的appender --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d %p (%file:%line\)- %m%n</pattern> <charset>UTF-8</charset> </encoder> </appender> <!-- 定義一個變量 下面可以引用 --> <property name="LOG_HOME" value="/log" /> <!-- 定義一個sql語句的日志文件存放位置 格式 規(guī)則 等信息 --> <appender name="mysqllog" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 日志文件路徑 與項(xiàng)目同級 --> <File>${LOG_HOME}/mysql.log</File> <!-- 日志內(nèi)容規(guī)則 編碼方式 --> <encoder> <pattern> %d %p (%file:%line\)- %m%n </pattern> <charset>UTF-8</charset> </encoder> <!-- 設(shè)置日志的分文件規(guī)則 以及命名 個人理解默認(rèn)按天來分 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/mysql.log.%d.%i</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!-- 設(shè)置日志文件最大size --> <maxFileSize>64 MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> </appender> <!-- 定義一個error的日志文件存放位置 格式 規(guī)則 等信息 --> <appender name="errorlog" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 日志文件路徑 與項(xiàng)目同級 --> <File>${LOG_HOME}/mysql.log</File> <!-- 日志內(nèi)容規(guī)則 編碼方式 --> <encoder> <pattern> %d %p (%file:%line\)- %m%n </pattern> <charset>UTF-8</charset> </encoder> <!-- 設(shè)置日志的分文件規(guī)則 以及命名 個人理解默認(rèn)按天來分 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/mysql.log.%d.%i</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!-- 設(shè)置日志文件最大size --> <maxFileSize>64 MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> </appender> <!-- 設(shè)置root全局日志的控制臺 使用上面第一個定義的'STDOUT' --> <root level="INFO"> <appender-ref ref="STDOUT"/> </root> <!-- 設(shè)置mapper相應(yīng)目錄下的sql語句的輸出 使用了定義的'mysqllog'和'STDOUT' 其中'mysqllog'是輸出到文件中 'STDOUT'是控制臺 additivity是否追加到root中 默認(rèn)true 如果為true則會在debug時打印兩條sql 所以這里為false --> <logger name="com.xxx.mapper" level="DEBUG" additivity="false"> <appender-ref ref="mysqllog" /> <appender-ref ref="STDOUT" /> </logger> <logger name="com.mytian.service" level="WARN"> </logger> </configuration>
在項(xiàng)目中使用時:
Logger logger = LoggerFactory.getLogger(所在類名.class);
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
mapstruct的用法之qualifiedByName示例詳解
qualifiedByName的意思就是使用這個Mapper接口中的指定的默認(rèn)方法去處理這個屬性的轉(zhuǎn)換,而不是簡單的get?set,今天通過本文給大家介紹下mapstruct的用法之qualifiedByName示例詳解,感興趣的朋友一起看看吧2022-04-04SpringBoot@Aspect 打印訪問請求和返回?cái)?shù)據(jù)方式
這篇文章主要介紹了SpringBoot@Aspect 打印訪問請求和返回?cái)?shù)據(jù)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09Springboot啟用多個監(jiān)聽端口代碼實(shí)例
這篇文章主要介紹了Springboot啟用多個監(jiān)聽端口代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-06-06SpringCloud微服務(wù)調(diào)用丟失請求頭的問題及解決方案
在Spring Cloud 中微服務(wù)之間的調(diào)用會用到Feign,但是在默認(rèn)情況下,Feign 調(diào)用遠(yuǎn)程服務(wù)存在Header請求頭丟失問題,下面給大家分享SpringCloud微服務(wù)調(diào)用丟失請求頭的問題及解決方案,感興趣的朋友一起看看吧2024-02-02走進(jìn)SpringBoot之配置文件與多環(huán)境詳解
這篇文章主要介紹了走進(jìn)SpringBoot之配置文件與多環(huán)境,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-05-05在Mybatis @Select注解中實(shí)現(xiàn)拼寫動態(tài)sql
這篇文章主要介紹了在Mybatis @Select注解中實(shí)現(xiàn)拼寫動態(tài)sql,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11JDK生成WebService客戶端代碼以及調(diào)用方式
WebService 是一種跨編程語言和跨操作系統(tǒng)平臺的遠(yuǎn)程調(diào)用技術(shù),下面這篇文章主要給大家介紹了關(guān)于JDK生成WebService客戶端代碼以及調(diào)用方式的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-08-08IntelliJ IDEA 安裝及初次使用圖文教程(2020.3.2社區(qū)版)
這篇文章主要介紹了IntelliJ IDEA 安裝及初次使用(2020.3.2社區(qū)版),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03