一、日誌
1. 日誌框架
市面上的日誌框架:
- JUL, JCL, log4j, log4j2, slf4j…
日誌門面: JCL, SLF4j, joss-logging
日誌實現:Log4j , Log4j2 , JUL , Logback
SpringBoot: 底層是Spring框架, Spring框架默認是用JCL
SpringBoot選用SLF4j和Logback
2. SLF4j使用
1. 如何在系統中使用SLF4j
以後開發的時候,日誌記錄方法的調用,不應該來直接調用日誌的實現類,而是調用日誌抽象層裏面的方法
給系統裏賣弄導入slf4j的jar和logback的實現jar
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HelloWorld {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger(HelloWorld.class);
logger.info("Hello World");
}
}
每一個日誌的實現框架都有自己配置文件。使用slf4j以後,配置文件還是做成日誌實現框架自己本身的配置文件
2. 遺留問題
a.(slf4j+ logback): Spring(commons-logging )、 Hibernate(jobs-logging)。一個系統中用到了不同的框架,而不同的框架又用不同的l og框架,造成混亂
統一日誌記錄,即使是別的框架和我一起統一使用slf4j進行輸出:
jcl-over-slf4j.jar replaces commons-logging.jar
log4j-over-slf4j.jar replaces log4j.jar
當應用程序調用jcl-over-slf4j.jar 或者 log4j-over-slf4j.jar的API的時候,會轉到SLF4j解析
如何將系統中所有的日誌都統一到slf4j:
- 將系統中其他日誌框架先排除
- 用中間包來替換原有的日誌框架
- 導入slf4j其他的實現
3. Spring boot日誌關係
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
SpringBoot 使用以下來做日誌功能:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>
總結:
1. Spring boot底層也是使用slf4j + logback的方式進行日誌記錄
2. spring boot也把其他的日誌都替換成了slf4j
4. 默認配置
1. 默認配置
spring boot 默認幫我們配置好了日誌
Logging.level=trace
Logging.file=spring.log
logging.path=/var/log
# 在控制檯輸出的日誌的格式
logging.pattern.concole=%d{yyyy-MM-dd}
# 指定文件中輸出日誌的格式
logging.pattern.file=
# 日誌輸出格式
# %d 表示日期時間
# %-5level 級別從左顯示5個字符寬度
# %logger{50} 表示logger名字最長50個字符,否則按照據點分割
# %msg 日誌消息
# %n 換行符
5. 切換日誌框架
如果由logback切換爲log4j,首先將相關的jar包和中間包替換掉
日誌的配置文件修改,採用log4j的配置名字