上一篇文章中簡單介紹了springboot通過系統配置的方式配置日志:
SpringBoot使用默認的日志logback(1)—系統配置
這篇文章簡單介紹一下日志的自定義配置。
1.自定義配置
spring boot官方推薦的日志配置如下:
日志系統 | 配置 |
logback | logback-spring.xml、logback-spring.groov、logbak.xml、logbak.groovy |
log4j2 | log4j2-spring.xml、log4j2.xml |
JDK(Java Util Logging) | logging.properties |
上面是spring boot官方文檔的提示內容,意思是:根據您的日志記錄系統,將加載相應的文件使用。即如果我們使用logback日志框架,那么可以使用logback-spring.xml、logback-spring.groovy、logback.xml、logback.groovy之一作為配置文件來加載。
spring boot官方建議使用logback-spring.xml作為logback框架的日志配置文件(例如:使用logback-spring.xml而不是logback.xml),因為帶-spring后綴的配置文件可以使用spring boot提供的一些高級功能,如profile多環境日志輸出。
我們加入日志配置的方式
server: port: 8082 # spring配置 spring: datasource: url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver # mybaits配置 mybatis: # 配置mapper的掃描,找到所有的mapper.xml映射文件 mapper-locations: classpath*:mappers/**/*Mapper.xml # 搜索指定包別名 type-aliases-package: site.longkui.**.entity # 日志配置 (系統配置) #logging: # pattern: #配置日志輸出格式 # file: "%d{yyyy-MM-dd} === [%thread] === %-5level === %logger{50} === - %msg%n" # file: #配置日志輸出的文件 # path: log1234 #日志輸出的位置,默認是項目的根目錄,會自動生成文件夾,而且默認狀態日志名字都叫spring.log # level: # 配置輸出日志級別 # root: debug #設置整個項目的日志輸出級別默認info(root表示整個項目) # site.longkui.app.mapper: INFO # 日志配置 logging: config: classpath:logback-config.xml #自定義日志配置文件
然后配置logback-spring.xml。配置位置在 src/main/resources。創建文件內容如下:
<?xml version="1.0" encoding="utf-8" ?> <!-- 1) 根節點<configuration>,包含下面三個屬性: scan: 當此屬性設置為true時,配置文件如果發生改變,將會被重新加載,默認值為true。 scanPeriod: 設置監測配置文件是否有修改的時間間隔,如果沒有給出時間單位,默認單位是毫秒。當scan為true時,此屬性生效。默認的時間間隔為1分鐘。 debug: 當此屬性設置為true時,將打印出logback內部日志信息,實時查看logback運行狀態。默認值為false。--> <configuration scan="true" scanPeriod="60" debug="false"> <!--控制臺輸出日志格式--> <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%d{yyyy-MM-dd HH:mm:ss} -- %-5level -- [%thread] -- %logger{50} --- %msg %n}"/> <!--文件輸出日志格式--> <property name="FILE_LOG_PATTERN" value="${FILE_LOG_PATTERN:-%d{yyyy-MM-dd hh:mm:ss} -- %-5level -- [%thread] -- %logger{50} --- %msg %n}"/> <!-- Appender: 設置日志信息的去向,常用的有以下幾個 1) ch.qos.logback.core.ConsoleAppender (控制臺) 2) ch.qos.logback.core.rolling.RollingFileAppender (文件大小到達指定尺寸的時候產生一個新文件) 3) ch.qos.logback.core.FileAppender (文件) --> <!--控制臺配置--> <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender"> <!--當環境是dev開發環境時,這部分配置才生效--> <springProfile name="dev"> <!--日志輸出格式--> <encoder> <pattern>${CONSOLE_LOG_PATTERN}</pattern> </encoder> </springProfile> <!--當環境不是dev開發環境時,這部分配置才生效--> <springProfile name="!dev"> <!--日志輸出格式--> <encoder> <pattern>--%logger{50} --- %msg %n</pattern> </encoder> </springProfile> </appender> <!--日志記錄文件配置--> <appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!--當環境是production生產環境時,這部分配置才生效 即在production生產環境上,我們才將日志信息記錄到日志文件中--> <springProfile name="production"> <!--日志文件保存路徑,可以是相對目錄,也可以是絕對目錄,如果上級目錄不存在會自動創建 -->--> <file>D:\idea\logs\example-logging.log</file> <!--基于大小和時間的輪轉策略,當日志內容超出文件大小限制后,會自動生成一個文件來繼續記錄和重命名--> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!--當日志內容超出文件大小限制后,會自動生成一個文件來繼續記錄,文件按下面格式命名--> <fileNamePattern>D:\idea\logs\example-logging-%d{yyyy-MM-dd}-%i.log</fileNamePattern> <!--文件最大限制,默認10MB--> <maxFileSize>10MB</maxFileSize> <!--文件最大保存周期,默認7天--> <maxHistory>7</maxHistory> <!--所有歸檔文件總的大小限制--> <totalSizeCap>20GB</totalSizeCap> </rollingPolicy> <!--日志輸出格式--> <encoder> <pattern>${FILE_LOG_PATTERN}</pattern> </encoder> </springProfile> </appender> <!-- 用來設置某一個包或者具體的某一個類的日志打印級別、以及指定<appender>。 <logger>僅有一個name屬性,一個可選的level和一個可選的addtivity屬性 name: 用來指定受此logger約束的某一個包或者具體的某一個類。 level: 用來設置打印級別,大小寫無關:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF, 如果未設置此屬性,那么當前logger將會繼承上級的級別。 additivity: 是否向上級logger傳遞打印信息。默認是true。 <logger>可以包含零個或多個<appender-ref>元素,標識這個appender將會添加到這個logger --> <springProfile name="dev"> <logger name="site.longkui.app.mapper" level="DEBUG" /> </springProfile> <root level="debug"> <appender-ref ref="consoleAppender"/> <appender-ref ref="fileAppender"/> </root> </configuration>
上面的xml文件,是簡單配置文件。
下面這篇文章會詳細解釋log4j2.xml文件配置。
2.控制臺輸出sql
編寫程序時,經常需要輸出sql,如果是系統配置日志的方式,只要參考上一篇文章,SpringBoot使用默認的日志logback(1)—系統配置 – 每天進步一點點 (longkui.site)
把root設置為debug即可。
這篇文章中自定義方式,設置下面的方式即可。
<springProfile name="dev"> <logger name="xxx.xxx.xxx.mapper" level="DEBUG" /> </springProfile>
注意,這個地方的logger的name要設置成自己項目的mapper,level=DEBUG。
這時,重新運行程序后,就可以在控制臺打印出sql了。