關于logback日志的詳解見這位仁兄的博客:Spring Boot-日志配置(超詳細)
我在這就開門見山直接介紹我們項目日志的配置使用吧!~
1、基本介紹
默認情況下,Spring Boot項目就會用Logback來記錄日志,并用INFO級別輸出到控制臺。如下圖:
實際開發(fā)中我們不需要直接添加logback日志依賴。
你會發(fā)現(xiàn) spring-boot-starter 其中包含了 spring-boot-starter-logging,該依賴內(nèi)容就是 Spring Boot 默認的日志框架 logback。
日志級別從低到高分為:
TRACE < DEBUG < INFO < WARN < ERROR < FATAL
只能展示大于或等于設置的日志級別的日志;也就是說springboot默認級別為INFO,那么在控制臺展示的日志級別只有INFO 、WARN、ERROR、FATAL
2、logback.xml日志文件配置
根據(jù)不同的日志系統(tǒng),你可以按如下規(guī)則組織配置文件名,就能被正確加載:
-
Logback:
logback-spring.xml,
logback-spring.groovy
,logback.xml
,logback.groovy
-
Log4j:
log4j-spring.properties
,log4j-spring.xml
,log4j.properties
,log4j.xml
-
Log4j2:
log4j2-spring.xml
,log4j2.xml
-
JDK (Java Util Logging):
logging.properties
Spring Boot官方推薦優(yōu)先使用帶有 -spring 的文件名作為你的日志配置(如使用 logback-spring.xml ,而不是logback.xml),命名為logback-spring.xml的日志配置文件,spring boot可以為它添加一些spring boot特有的配置項(下面會提到)。
默認的命名規(guī)則,并且放在 src/main/resources 下如果你即想完全掌控日志配置,但又不想用logback.xml作為Logback配置的名字,application.yml可以通過logging.config屬性指定自定義的名字:
1
|
logging.config=classpath:logging-config.xml |
這里寫代碼片雖然一般并不需要改變配置文件的名字,但是如果你想針對不同運行時Profile使用不同的日志配置,這個功能會很有用。
我們項目的日志配置內(nèi)容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
<? xml version = "1.0" encoding = "UTF-8" ?> < configuration > <!-- 此xml在spring-boot-1.5.3.RELEASE.jar里 --> < include resource = "org/springframework/boot/logging/logback/defaults.xml" /> < include resource = "org/springframework/boot/logging/logback/console-appender.xml" /> <!-- 開啟后可以通過jmx動態(tài)控制日志級別(springboot Admin的功能) --> <!--<jmxConfigurator/>--> < appender name = "FILE" class = "ch.qos.logback.core.rolling.RollingFileAppender" > <!--<File>/home/hfw-client/hfw_log/stdout.log</File>--> < File >D:/log/hfw-client/hfw_log/stdout.log</ File > < encoder > < pattern >%date [%level] [%thread] %logger{60} [%file : %line] %msg%n</ pattern > </ encoder > < rollingPolicy class = "ch.qos.logback.core.rolling.TimeBasedRollingPolicy" > <!-- 添加.gz 歷史日志會啟用壓縮 大大縮小日志文件所占空間 --> <!--<fileNamePattern>/home/hfw-client/hfw_log/stdout.log.%d{yyyy-MM-dd}.log</fileNamePattern>--> < fileNamePattern >D:/log/hfw-client/hfw_log/stdout.log.%d{yyyy-MM-dd}.log</ fileNamePattern > < maxHistory >30</ maxHistory > <!-- 保留30天日志 --> </ rollingPolicy > </ appender > < logger name = "com.moerlong.hfw.dao" level = "DEBUG" /> < root level = "INFO" > < appender-ref ref = "CONSOLE" /> < appender-ref ref = "FILE" /> </ root > </ configuration > |
3、打印mybatis的sql語句
比較蠢的方法是直接把root標簽的level屬性改為DEBUG:
1
2
3
4
|
< root level = "DEBUG" > < appender-ref ref = "CONSOLE" /> < appender-ref ref = "FILE" /> </ root > |
這個改為DEBUG則會打印最詳細的日志,包括mybatis的sql語句(量太大建議開發(fā)測試時才用)
我們一般針對DAO的包進行DEBUG日志設置:
1
|
< logger name = "com.moerlong.hfw.dao" level = "DEBUG" /> |
這樣的話,只打印SQL語句:
4、代碼里打印日志
之前我們大多數(shù)時候自己在每個類創(chuàng)建日志對象去打印信息,比較麻煩:
1
2
|
private static final Logger logger = LoggerFactory.getLogger(YjServiceImpl. class ); logger.error( "xxx" ); |
現(xiàn)在可以直接在類上通過 @Slf4j 標簽去聲明式注解日志對象
先在pom.xml中添加依賴:
1
2
3
4
5
6
|
<!--@Slf4j自動化日志對象-log--> < dependency > < groupId >org.projectlombok</ groupId > < artifactId >lombok</ artifactId > < version >1.16.16</ version > </ dependency > |
然后就直接可以使用了:
1
2
3
4
5
|
@Slf4j @RestController public class HfwController { log.info( "" ); } |
到此這篇關于SpringBoot項目的logback日志配置(包括打印mybatis的sql語句)的文章就介紹到這了,更多相關SpringBoot logback日志配置內(nèi)容請搜索服務器之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/Abysscarry/article/details/80196628