Logback
是log4j
框架的作者開發(fā)的新一代日志框架,它效率更高噪叙、能夠適應(yīng)諸多的運行環(huán)境矮锈,同時天然支持SLF4J
。
默認情況下睁蕾,Spring Boot
會用Logback
來記錄日志苞笨,并用INFO
級別輸出到控制臺债朵。
1. 添加依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>
但是,其實是不需要引入該依賴的瀑凝,因為你會發(fā)現(xiàn)spring-boot-starter其中包含了 spring-boot-starter-logging序芦,具體看下圖
springBoot依賴圖
2. 增加配置 -(方式一 application.yml)
org.springframework.boot.logging.logback
包下提供了默認的logback配置文件base.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--
Base logback configuration provided for compatibility with Spring Boot 1.1
-->
<included>
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml" />
<include resource="org/springframework/boot/logging/logback/file-appender.xml" />
<root level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</root>
</included>
所以springBoot
支持在application.properties
或application.yml
中配置logging相關(guān)屬性,簡單配置如下
# 系統(tǒng)相關(guān)配置
server:
port: 8082
connection-timeout: 30000
servlet:
context-path: /
# 自定義
project: springboot-logback
pattern: "%d{yyyy-MM-dd HH:mm:ss.SSS} |-%-5level [%thread] %c [%L] -| %msg%n"
path: D:\logs\logback\
# 日志相關(guān)配置
logging:
level:
com.springboot.my: info
pattern:
console: ${pattern}
file: ${pattern}
path: ${path}
file: ${path}\${project}-app.log
經(jīng)過驗證粤咪,日志打印正常
logback日志
3. 增加配置 -(方式二 logback.yml)
- 注釋掉
application.yml
中有關(guān)log相關(guān)的配置
# 系統(tǒng)相關(guān)配置
server:
port: 8082
connection-timeout: 30000
servlet:
context-path: /
# 自定義
#project: springboot-logback
#pattern: "%d{yyyy-MM-dd HH:mm:ss.SSS} |-%-5level [%thread] %c [%L] -| %msg%n"
#path: D:\logs\logback\
#
## 日志相關(guān)配置
#logging:
# level:
# com.springboot.my: info
# pattern:
# console: ${pattern}
# file: ${pattern}
# path: ${path}
# file: ${path}\${project}-app.log
- resource目錄下增加
logback.xml
谚中,具體配置如下
<!--
scan:當此屬性設(shè)置為true時,配置文件如果發(fā)生改變射窒,將會被重新加載藏杖,默認值為true。
scanPeriod:設(shè)置監(jiān)測配置文件是否有修改的時間間隔脉顿,如果沒有給出時間單位蝌麸,默認單位是毫秒。當scan為true時艾疟,此屬性生效来吩。默認的時間間隔為1分鐘。
debug:當此屬性設(shè)置為true時蔽莱,將打印出logback內(nèi)部日志信息弟疆,實時查看logback運行狀態(tài)。默認值為false盗冷。
-->
<configuration debug="false" scan="true" scanPeriod="60 seconds" packagingData="true">
<!--
property:用來定義變量值的標簽怠苔,<property> 有兩個屬性,name和value仪糖。通過<property>定義的值會被插入到logger上下文中柑司。定義變量后,可以使“${}”來使用變量锅劝。
例如使用<property>定義上下文名稱攒驰,然后在<contentName>設(shè)置logger上下文時使用。
-->
<property name="contextName" value="springboot-lb" />
<!--
contextName:每個logger都關(guān)聯(lián)到logger上下文故爵,默認上下文名稱為“default”玻粪。
但可以使用<contextName>設(shè)置成其他名字,用于區(qū)分不同應(yīng)用程序的記錄诬垂。一旦設(shè)置劲室,不能修改。
-->
<contextName>${contextName}</contextName>
<!-- ******************** appender:日志目的地 start ******************** -->
<!-- 標準輸出:console -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoder 默認配置為PatternLayoutEncoder -->
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} |-%-5level [%thread] %c [%L] -| %msg%n</pattern>
</encoder>
</appender>
<!-- 文件輸出:file -->
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--<file></file>-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件輸出的文件名-->
<FileNamePattern>D:\logs\logback\${contextName}-%d{yyyyMMdd}.log</FileNamePattern>
</rollingPolicy>
<encoder>
<!--格式化輸出:%d表示日期剥纷,%thread表示線程名痹籍,%-5level:級別從左顯示5個字符寬度%msg:日志消息,%n是換行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} |-%-5level [%thread] %c [%L] -| %msg%n</pattern>
</encoder>
<!--日志文件最大的大小-->
<!--
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
-->
</appender>
<!-- ******************** appender:日志目的地 end ******************** -->
<!-- ******************** root:定義日志的level晦鞋、appender蹲缠,且最多只能配置一個 start ******************** -->
<!--TRACE < DEBUG < INFO < WARN < ERROR-->
<root>
<level value="INFO" />
<appender-ref ref="file" />
<appender-ref ref="console" />
</root>
<!-- ******************** root:定義日志的level棺克、appender,且最多只能配置一個 end ******************** -->
<!-- ******************** logger:精確配置package或class的level线定、appender,可以配置0個或多個 end ******************** -->
<!--
level:日志級別(logger中的level會覆蓋root中的娜谊,即以logger中為準,不管是否向上傳遞)
name:包名 或 類的全路徑
addtivity:日志信息是否向上(root)傳遞
-->
<!-- 包名 -->
<logger name="com.springboot.my" />
<!-- 類的全路徑 -->
<logger name="com.springboot.my.SpringBootLogbackApplication" level="warn" additivity="false">
<appender-ref ref="console"/>
<appender-ref ref="file"/>
</logger>
<!-- ******************** logger:精確配置package或class日志的level斤讥、appender end ******************** -->
</configuration>
-
項目啟動驗證纱皆,日志輸出正常
logback日志文件輸出