-
- 一、为什么要用日志?
- 二、日志类型
- 三、日志级别
- 四、logback 日志使用方式
一、为什么要用日志? 以前总是通过
System.out.println("重要数据")
在控制台输出各种重要数据,但到了真实开发环境才发现日志是极其重要的东西。无论是在开发环境还是正式环境,日志都是定位 bug 和解决 bug 的重要信息。日志能干的事情很多,能够定位问题,解决问题,是最大的功能点:
- 记录一切: 日志帮助我们记录程序功能都干了什么,无论是正常的输入输出还是出现异常,都可以用日志记录
- 定位问题: 日志可以帮助程序员调试问题,帮助测试人员定位问
- 记录分析用户行为: 统计分析师用来记录用户的一起行为,用于分析用户的习惯和商业价值
- 备份和还原实时数据: 数据库工程师用来作为一种特殊的数据库
二、日志类型 日志类型有很多,比如 JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j…
主要分为抽象层和实现层:
日志抽象层 | 日志实现 |
---|---|
JCL(Jakarta Commons Logging) SLF4j(Simple Logging Facade for Java) jboss-logging | Log4j , JUL , Log4j2 , Logback |
- JCL:不使用,从2014年开始就没更新过了。
- jboss-logging:不使用,使用场景有限。
- SLF4j:springboot中使用的日志抽象层。
- Log4j
- Log4j2:apache 借 Log4j 之名写的一个日志框架,并不是 Log4j 的升级版。太高端了,很多框架适配不了。
- Logback:Log4j 的升级版本,和 SLF4j 出自同一个人之手。Spring Boot 约定的默认配置。
SpringBoot选用 SLF4j 和 Logback。大部分场景推荐 Spring Boot 自带的日志 logback。 在 Spring Boot 中,logback 是基于 slf4j 实现的。
三、日志级别 日志级别从低到高分为:TRACE < DEBUG < INFO < WARN < ERROR
如果设置为 WARN ,则低于 WARN 的信息都不会输出。
同理,当我们指定日志级别为 INFO 级别,那么 TRACE、DEBUG 级别的日志就不会被输出打印。
Spring Boot 中默认配置 ERROR、WARN 和 INFO 级别的日志输出到控制台。
四、logback 日志使用方式 方式一:
引入logback依赖:
org.springframework.boot
spring-boot-starter-logging
但是实际开发中不需要直接添加该依赖。spring-boot-starter 包含了 spring-boot-starter-logging,该依赖内容就是 Spring Boot 默认的日志框架 logback。
示例:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class LogApplication {public static void main(String[] args) {
Logger logger =LoggerFactory.getLogger(LogApplication.class);
SpringApplication.run(LogApplication.class, args);
logger.debug("This is a debug message");
//注意 spring 默认日志输出级别为 info 所以默认情况下 这句不会打印到控制台
logger.info("This is an info message");
logger.warn("This is a warn message");
logger.error("This is an error message");
}
}
运行日志:
2019-07-10 23:51:49.225INFO 3906 --- [main] com.fishpro.log.LogApplication: Started LogApplication in 1.688 seconds (JVM running for 2.317)
2019-07-10 23:51:49.226INFO 3906 --- [main] com.fishpro.log.LogApplication: This is an info message
2019-07-10 23:51:49.227WARN 3906 --- [main] com.fishpro.log.LogApplication: This is a warn message
2019-07-10 23:51:49.227 ERROR 3906 --- [main] com.fishpro.log.LogApplication: This is an error message
要想 debug 级别的日志能打印出来,就得配置日志级别。
默认是不需要单独配置 logback 依赖的,因为依赖包已经配置好了。
方式二:
【springboot|SpringBoot 日志系列:(一)日志类型】每次都要写这行代码
Logger logger =LoggerFactory.getLogger(类名.class);
,觉得麻烦的话,也有下面这种使用方法:- 添加 lombok 的依赖
org.projectlombok:lombok
- 安装 lombok 的依赖
- 代码:
文章图片
- 可以使用{} 占位符来拼接字符串,而不需要使用““+””来连接字符串。
推荐阅读
- JavaWeb|最棒的SpringBoot多模块应用开发教程
- java|springboot日志打印
- springboot|SpringBoot 日志系列:(二)日志配置
- springboot|SpringBoot2.x系列(二)生产环境日志及预警
- SrpingBoot技术总结|构建SpringBoot实战项目 系列文章之日志配置
- Spring|解决错误(Cannot resolve method ‘getConnection‘ in ‘DataSource‘)
- #|Spring Boot 多个MongoDB 数据源配置与实现
- spring|spring boot配置JDBC数据源连接DB2数据库
- SpringBoot|SpringBoot的参数校验器 - Validator