这篇文章是边听尚硅谷的课程边记的笔记,也是为了以后方便查看,视频连接:https://www.bilibili.com/vide...java
小张负责一个大型系统的开发,为了监控系统的运行情况,系统中包含大量的System.out.println()语句,为了更好地管理呢,小张决定写一个日志框架对日志进行管理,他设想的日志框架应该包含如下几个功能:spring
在此基础上小张开发出了这样一个日志框架,可是为了使用这个日志框架,当小张修改了这个日志框架中的内容以后,系统中相关的代码都须要进行修改。为此,小张想到了一种模式:
小张为全部的日志框架写了一个统一的接口层:日志门面(抽象层),该日志门面定义了通用的功能接口,具体的实现能够有不一样的实现springboot
日志门面(日志抽象层) | 日志实现 |
---|---|
Jakarta Commons Logging(再也不更新),jboss-logging(生来不为普通程序猿所用), slf4j | log4j(落后),java.util.Logging(很差用),Logback,Log4j2(与Log4j开发不是同一人) |
最终选择:日志门面:slf4j 日志实现:Logback框架
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后,配置文件仍是使用日志实现框架本身自己的配置文件ide
假如我如今开发A系统用的日志框架是slf4j+logback,可是开发系统时用到了spring框架(框架自己的日志记录依赖common-logging),Hibernate(jboss),Mybatis....那么我这个系统如何统一使用slf4j+logback进行日志记录??
解决方案:
<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>
总结:spring-boot
- SpringBoot底层也是使用slf4j+Logback的方式进行日志记录;
- SpringBoot也把其余的日志框架替换成了slf4j
- 若是咱们引入了其余框架,必定要把这个框架的默认日志框架移除掉
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency>
SpringBoot默认给咱们配置好了日志,能够直接使用,默认的日志级别是info;ui
Logger logger = LoggerFactory.getLogger(getClass()); @Test public void contextLoads() { /*日志级别trace<debug<info<warn<error*/ logger.trace("这是trace日志"); logger.debug("这是debug日志"); logger.info("这是info日志"); logger.warn("这是warn日志"); logger.error("这是error日志"); }
# 配置整个项目的日志级别 logging.level.root=debug # 配置指定包下面的日志级别 logging.level.com.luhuiling=info # logging.file指定日志文件的名称,若是不指定,日志只在控制台输出 logging.file=D:/springboot.log # logging.path指定日志文件的路径,若是不指定,文件将存放在项目根目录下 logging.path # 控制台输出日志的格式 logging.pattern.console # 文件中输出日志的格式 logging.pattern.file