SpringBoot日志配置
1.Spring Boot默认日志框架
Spring Boot默认使用LogBack日志系统,如果不需要更改为其他日志系统如Log4j2等,则无需多余的配置,LogBack默认将日志打印到控制台上。如果要使用LogBack,原则上是需要添加dependency依赖的
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></dependency>
但是因为新建的Spring Boot项目一般都会引用spring-boot-starter或者spring-boot-starter-web,而这两个起步依赖中都已经包含了对于spring-boot-starter-logging的依赖,所以,无需额外添加依赖。
2.常用的日志框架
日志门面 | 日志实现 |
---|
JCL、SLF4j、jboss-logging | Log4j、 JUL(java.util.logging) Log4j2、 Logback |
2.1日志门面: 不是具体的日志解决方案,它只服务于各种各样的日志系统,允许最终用户在部署其应用时使用其所希望的日志实现来使用日志功能。
2.2日志实现: 是基于对应的日志门面的规范来实现的具体日志功能的框架
2.3 框架之间由于历史迭代原因及框架性能等问题,选择的日志框架也不一样,常见的框架与默认选择的日志系统关系如下:
框架 | 日志 |
---|
Spring | JCL |
SpringBoot | Sfl4j–>logback |
Hibernate3 | Slf4j |
2.4而框架使用的日志不一样,SpringBoot早已考虑这个问题我们看一下它是怎么解决的
可以看到 他把其他的框架日志 偷梁换柱了 都使用的是 slf4j
3. 日志输出级别 以及使用
日志输出级别 TRACE > DEBUG > INFO > WARN > ERROR
3.1 Springboot简单的日志使用 (方式一)
LoggerFactory.getLogger(MyTest8.class);这里面的MyTest8.class是为了方便快速定位是哪一个类输出打印的日志
public class LoggerExec {private static final Logger logger = LoggerFactory.getLogger(MyTest8.class);public static void main(String[] args) {logger.trace("trace");logger.debug("debug");logger.info("info");logger.warn("warn");logger.error("error");}}
3.2 Springboot简单的日志使用 (方式二)
导入依赖,并且 你的IDEA要安装了Lombok插件
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency>
@Sif4相当于 private final Logger log= LoggerFactory.getLogger(MyTest8.class);
@Slf4j
public class MyTest9 extends ParentTest {@Testpublic void test1() {log.debug("debug");log.info("info");log.warn("warn");log.error("error");}
}
4. 日志打印级别
日志的打印级别 TRACE < DEBUG < INFO < WARN < ERROR < FATAL ,且级别是逐渐提供,如果日志级别设置为INFO,则意味TRACE和DEBUG级别的日志都看不到。
Spring Boot默认级别就是INFO,可通过 logging.level.root=warn 改变SpringBoot日志打印级别
5.日志的设置
(logging.file=文件名,logging.path=文件路径已经过时了,变成logging.file.name=文件路径/文件名)
logging:file:name: F:/springboot.logpattern:console: "%d{yyyy-MM-dd HH:mm:ss.SSS} == %-5level == [%thread] == %logger{15} == %msg%n"file: "%d{yyyy-MM-dd HH:mm:ss.SSS} == %-5level == [%thread] == %logger{15} == %msg%n"level:com.example: trace
- %d 日期时间 {格式}
- %-5level 左对齐5个字符 日志等级
- %thread 线程名
- %logger{15} 输出日志打印所在的类 限制15个字符