logback既可以透過application設定檔進行日誌的配置,又可以透過logback-spring.xml進行日誌的設定。通常情況下,使用全域設定檔application.yml或properties進行設定就足夠了,如果您的日誌輸出需求特別複雜且需求比較個人化,可以考慮使用logback-spring.xml的設定方式。
我們可以在applicaition.properties(yml) 檔案中進行日誌的設定
logging: level: root: info com.zimug.boot.launch.controller: debug file: path: D:\logs name: D:\logs\boot-launch.log max-size: 10MB max-history: 10 pattern: console: '%red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{10}) - %cyan(%msg%n)' file: '%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger : %msg%n'
#logging.level.root=info
指定整個系統的預設日誌等級是info,日誌等級統一化
logging.level.com.zimug.boot. launch.controller=debug
,指定某個特定的package的日誌等級是debug,日誌等級個人化。優先權角度,個性配置大於統一配置。
logging.file.path
將日誌輸出到指定目錄,如果不指定
logging. file.name
,日誌檔案的預設名稱是spring.log。配置了logging.file.name
之後,logging.file.path
設定失效。
無論何種設置,Spring Boot都會自動按天分割日誌文件,也就是說每天都會自動產生一個新的log文件,而之前的會自動打成GZ壓縮包。 # 日誌檔案大小
可以設定logging.file.max-size=10MB
分割的每個日誌的檔案最大容量,超過這個size之後日誌繼續分隔。
可以設定保留的日誌時間logging.file.max-history=10
,以天為單位
logging.pattern.file
輸出到檔案中的日誌的格式
#logging.pattern.console
控制台輸出日誌的格式,為了在控制台調試時候顯示效果更清晰,為日誌增加了顏色。 red、green等等
配合這張圖,看看佔位符和logging.pattern.console
格式配置之間的關係
%d{HH:mm:ss.SSS}:日誌輸出時間(red)
%thread:輸出日誌的進程名字,這在Web應用以及非同步任務處理中很有用(green)
%-5level:日誌級別,並且使用5個字元靠左對齊(highlight高亮藍色)
%logger:日誌輸出類別的名字(boldMagenta粗體洋紅色)
%msg:日誌訊息(cyan藍綠色)
%n:平台的換行符號
一般情況下,使用全域設定檔application.yml或properties進行設定就足夠了,如果您的日誌輸出需求特別複雜,可以考慮使用logback-spring.xml的設定方式。
spring boot 用自帶的logback打印日誌,多環境打印:
生產環境輸出到控制台和文件,一天一個文件,保留30天.
開發環境輸出到控制台和打印sql(mybatis)輸出,生產環境不打印這個信息
列印Mybatis SQL,只要把使用到Mybatis的package的日誌等級調整為DEBUG,就可以將SQL列印出來。2.2.需求實作因為logback是spring boot的預設日誌框架,所以不需要引入maven依賴,直接上logback-spring.xml放在resources下面
<?xml version="1.0" encoding="UTF-8"?> <configuration> <!--引入默认的一些设置--> <include resource="org/springframework/boot/logging/logback/defaults.xml"/> <!--web信息--> <logger name="org.springframework.web" level="info"/> <!--写入日志到控制台的appender,用默认的,但是要去掉charset,否则windows下tomcat下乱码--> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>${CONSOLE_LOG_PATTERN}</pattern> </encoder> </appender> <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径--> <property name="LOG_PATH" value="D:/logs/boot-launch"/> <!--写入日志到文件的appender--> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--日志文件输出的文件名,每天一个文件--> <FileNamePattern>${LOG_PATH}.%d{yyyy-MM-dd}.log</FileNamePattern> <!--日志文件保留天数--> <maxHistory>30</maxHistory> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> </encoder> <!--日志文件最大的大小--> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <MaxFileSize>10MB</MaxFileSize> </triggeringPolicy> </appender> <!--异步写日志到文件--> <appender name="asyncFileAppender" class="ch.qos.logback.classic.AsyncAppender"> <discardingThreshold>0</discardingThreshold> <queueSize>500</queueSize> <appender-ref ref="FILE"/> </appender> <!--生产环境:打印控制台和输出到文件--> <springProfile name="prod"> <root level="info"> <appender-ref ref="CONSOLE"/> <appender-ref ref="asyncFileAppender"/> </root> </springProfile> <!--开发环境:打印控制台--> <springProfile name="dev"> <!-- 打印sql --> <logger name="com.zimug.boot.launch" level="DEBUG"/> <root level="DEBUG"> <appender-ref ref="CONSOLE"/> </root> </springProfile> <!--测试环境:打印控制台--> <springProfile name="test"> <root level="info"> <appender-ref ref="CONSOLE"/> </root> </springProfile> </configuration>
import org.slf4j.Logger; import org.slf4j.LoggerFactory; @RestController public class LogTestController { private static final Logger logger = LoggerFactory.getLogger(LogTestController.class); @GetMapping("/testlog") public void test(){ logger.trace("Trace 日志..."); logger.debug("Debug 日志..."); logger.info("Info 日志..."); logger.warn("Warn 日志..."); logger.error("Error 日志..."); } }
以上是springboot logback日誌框架怎麼配置的詳細內容。更多資訊請關注PHP中文網其他相關文章!