springboot日志框架學習------slf4j和log4j2
日志框架的作用,日志框架就是用來記錄系統的一些行為的,可以通過日志發現一些問題,在出現問題之后日志是好的一個幫手。
市面上的日志框架大概有這些:JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j....等等
SLF4j(Simple Logging Facade for Java) 他是一個抽象的門面,需要實現
Log4j JUL(java.util.logging) Log4j2 Logback都可以實現它。
上邊選一個門面(抽象層)、下邊來選一個實現;
日志門面: SLF4J;
日志實現:Logback, Log4j2;
SpringBoot:底層是Spring框架,Spring框架默認是用JCL;
SpringBoot選用 SLF4j和logback;
如何將系統中所有的日志都統一到slf4j
1、將系統中其他日志框架先排除出去;
2、用中間包來替換原有的日志框架;
3、我們導入slf4j其他的實現
springboot日志關系
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring‐boot‐starter</artifactId>
</dependency>
//日志啟動器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring‐boot‐starter‐logging</artifactId>
</dependency>
底層的依賴關系
總結:
1)、SpringBoot底層也是使用slf4j+logback的方式進行日志記錄
2)、SpringBoot也把其他的日志都替換成了slf4j;
SpringBoot能自動適配所有的日志,而且底層使用slf4j+logback的方式記錄日志,引入其他框架的時候,只需要把這個框架依賴的日志框架排除掉即可;
日志的使用
springboot默認已經幫我們配置好了日志,日志級別為trace<debug<info<warn<error
默認的日志級別為inifo,日志輸出只有在當前級別以及更高級別的才輸出。
例如:
//日志記錄器
Logger logger = LoggerFactory.getLogger(getClass());
logger.info("這是info日志...");
日志輸出格式:
%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