当前位置: 代码迷 >> 综合 >> springboot日志集成(1):Logback log4j2
  详细解决方案

springboot日志集成(1):Logback log4j2

热度:84   发布时间:2024-03-09 15:57:56.0

前言: java有许多的日志组件,比如 log4j,log4j2,logback还有java自生提供的Java Util Logging,其实在springboot中对这些组件都提供了支持,log4j,log4j2和logback都提供相应的组件支持。

一、Logback

1)在springboot中默认使用的日志工具是logback,不过在提及具体的日志工具之前要提一个名词,这个名词就是slf4j(Simple Logging Facade For Java)。
2)百度百科解释:
https://baike.baidu.com/item/slf4j/6408868
3)slf4j不是具体的日志解决方案,它有点类似于jdbc,使用了门面模式,是一个针对各类日志的抽象实现,既然是抽象的日志实现,在springboot中肯定不需要额外导入。

注意:spring-boot-starter中就提供了对spring-boot-starter-logging的依赖在spring-boot-starter-logging中可以看到以及集成了slf4j与具体实现logback的默认支持:

在这里插入图片描述
1)修改UserController

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private final Logger logger = LoggerFactory.getLogger(UserController.class);

在这里插入图片描述
2)在浏览器上输入:localhost:8080/hello,可以看控制台日志的输出:

在这里插入图片描述

1.1、日志级别

修改controller 把日志的输出改成 logger.debug(“这个一个hello日志”);
这个时候重启,再调用,发现后台并不会有任何输出,这原因是日志级别在作祟。

  1. 默认情况下,Spring Boot 配置的是INFO 日志级别,也就是会输出INFO级别以上的日志(ERROR, WARN, INFO)。
    如果需要 Debug 级别的日志。在 src/main/resources/application.properties 中配置。
    debug=true
  1. 配置 logging.level.* 来具体输出哪些包的日志级别。
    例如
    logging.level.root=INFO
    logging.level.org.springframework.web=DEBUG
    logging.level.cn.enjoy.controller=DEBUG

在这里插入图片描述

  1. 这个时候,包括springframework.web以及cn.enjoy.controller的debug日志都可以输出来了:

在这里插入图片描述

1.2、日志文件
  1. 一般情况下,springboot日志只会输出到控制台,并不会写入到日志文件,但是,在一些正式环境的应用中,我们需要通过在 application.properites 文件中配置 logging.file 文件名称和 logging.path 文件路径,将日志输出到日志文件中。

     logging.path = /var/tmplogging.file = xxx.loglogging.level.root = info
    

注意:

如果只配置 logging.path,在 /var/tmp文件夹生成一个日志文件为 spring.log。如果只配置 logging.file,会在项目的当前路径下生成一个 xxx.log 日志文件。
这里有一个坑,logging.path 和logging.file都配置了,只会有logging.file生效,所以,如果要指定日志生成的具体位置使用logging.file 配置就好

2)在application.properties中配置

	logging.file =F:\\log\\enjoy.log

在这里插入图片描述

			这样在F盘的相应位置出现日志文件。。

二、log4j2

在spring-boot-dependencies POMs中搜索spring-boot-starter-log4j2
发现Spring boot父Pom中自己提供了这个依赖,于是我们加入如下jar依赖:

  1. 修改pom.xml文件
 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId></dependency>
	注意: 由于默认使用logback在扩展log4j2之前先要把logback移除日志使用跟上面logback一样。

**下一章:**正在更新中。。。