日誌
1、日誌框架
日誌的本質就是輸出語句 只是有級別之分(可以控制在什麼情況下輸出,什麼情況下不輸出) 成熟的日誌框架分爲抽象層和實現層
市面上的日誌框架;
JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j....
日誌門面 (日誌的抽象層) |
日誌實現 |
|
Log4j JUL(java.util.logging) Log4j2 Logback |
左邊選一個門面(抽象層)、右邊來選一個實現;(注意抽象層和實現層之間還有一個適配層)
==SpringBoot選用 SLF4j和logback(log4j的升級版); ==
2、SLF4j使用
以後開發的時候,日誌記錄方法的調用,不應該來直接調用日誌的實現類,而是調用日誌抽象層裏面的方法;
每一個日誌的實現框架都有自己的配置文件。使用slf4j以後,配置文件還是做成日誌實現框架自己本身的配置文件;
2、遺留問題
a(slf4j+logback): Spring(commons-logging)、Hibernate(jboss-logging)、MyBatis、xxxx
統一日誌記錄,即使是別的框架和我一起統一使用slf4j進行輸出?
如何讓系統中所有的日誌都統一到slf4j;
==1、將系統中其他日誌框架先排除出去;==
==2、用中間包來替換原有的日誌框架;==
==3、我們導入slf4j其他的實現==
==SpringBoot能自動適配所有的日誌,而且底層使用slf4j+logback的方式記錄日誌,引入其他框架的時候,只需要把這個框架依賴的日誌框架排除掉即可;==
4、日誌使用;
1、默認配置
SpringBoot默認幫我們配置好了日誌;
表現層:
//記錄器
Logger logger = LoggerFactory.getLogger(getClass());
@Test
public void contextLoads() {
//System.out.println();
//日誌的級別;
//由低到高 trace<debug<info<warn<error
//可以調整輸出的日誌級別;日誌就只會在這個級別以以後的高級別生效
logger.trace("這是trace日誌...");
logger.debug("這是debug日誌...");
//SpringBoot默認給我們使用的是info級別的,沒有指定級別的就用SpringBoot默認規定的級別;root級別
logger.info("這是info日誌...");
logger.warn("這是warn日誌...");
logger.error("這是error日誌...");
}
日誌輸出格式:
%d表示日期時間,
%thread表示線程名,
%-5level:級別從左顯示5個字符寬度
%logger{50} 表示logger名字最長50個字符,否則按照句點分割。
%msg:日誌消息,
%n是換行符
-->
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
SpringBoot修改日誌的默認配置(實現層的配置文件 一般就是配置日誌級別日誌輸出位置,輸出方式)
logging.level.com.atguigu=trace
#logging.path=
# 不指定路徑在當前項目下生成springboot.log日誌
# 可以指定完整的路徑;
#logging.file=G:/springboot.log
# 在當前磁盤的根路徑下創建spring文件夾和裏面的log文件夾;使用 spring.log 作爲默認文件
logging.path=/spring/log
# 在控制檯輸出的日誌的格式
logging.pattern.console=%d{yyyy-MM-dd} [%thread] %-5level %logger{50} - %msg%n
# 指定文件中日誌輸出的格式
logging.pattern.file=%d{yyyy-MM-dd} === [%thread] === %-5level === %logger{50} ==== %msg%n
logging.file |
logging.path |
Example |
Description |
(none) |
(none) |
|
只在控制檯輸出 |
指定文件名 |
(none) |
my.log |
輸出日誌到my.log文件 |
(none) |
指定目錄 |
/var/log |
輸出到指定目錄的 spring.log 文件中 |
2、指定配置 (注意在springboot中配置)
給類路徑下放上每個日誌框架自己的配置文件即可;SpringBoot就不使用他默認配置的了(日誌框架和spring框架整合時)
Logging System |
Customization |
Logback |
logback-spring.xml, logback-spring.groovy, logback.xml or logback.groovy |
Log4j2 |
log4j2-spring.xml or log4j2.xml |
JDK (Java Util Logging)(這也是一個實現層的日誌框架) |
logging.properties |
logback-spring.xml:可以使用SpringBoot的高級Profile功能 當時logback.xml就沒有這個功能
注意配置日誌級別或是日誌輸出位置在application.properties 中設置
但是具體輸入的什麼信息多種情況的輸出信息的設置在日誌的配置文件中