java——springboot(2)
SpringBoot选用了SLF4j(日志门面)和logback;
开发时,日志记录方法的调用不应该直接调用日志的实现类,而是调用日志抽象层的方法;
给系统导入slf4j的jar和logback的实现jar:
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与各种实现类日志之间的关系图示:
统一日志框架:项目里的多种框架都统一使用slf4j进行输出
官方图示:
统一到slf4j:
1、将系统的其它日志排除出去 2、用中间包替换原有的日志框架 3、导入slf4j的其它实现
日志关系:
当我们引用其它框架时,想用slf4j代替其原有的日志框架,一定要把原本的日志依赖移除掉,因为各代替包里的包名还是用原本日志框架的名,如果不移除的话会有冲突;如:
因此,我们在引入其它框架时,SpringBoot是可以自动适配所有的日志,且底层使用的是slf4j+logback的方式记录日志,只需要我们在导入这个框架的时候把其所依赖的日志框架排除掉即可;
使用日志例子:
package teststs2; import org.junit.jupiter.api.Test; import org.slf4j.LoggerFactory; import org.junit.runner.RunWith; import org.slf4j.Logger; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) @SpringBootTest class LzjSts2ApplicationTests { @Test void contextLoads() { Logger logger = LoggerFactory.getLogger(getClass()); //日志级别,由低到高;SpringBoot默认配置的是info以上的级别才输出;可以通过配置文件logging.level.com.atguigu=tarce这样改变其输出级别 logger.trace("这是trace日志"); logger.debug("这是debug日志"); logger.info("这是info日志"); logger.warn("这是warn日志"); logger.error("这是error日志); } }
如果想将日志生成对应的文件储存,可以通过配置文件里配置:
logging.file = G:/springboot.log #可以指定完整的路径
logging.path = /spring/log # 在当前磁盘的跟路径下创造spring文件夹和里面的log文件夹,使用spring.log作为默认文件;
控制日志格式:
logging.pattern.console:设置控制台输出的格式
logging.pattern.file:设置文件中日志输出的格式
例:
如果想自己配置一个日志配置文件,只需要将其放在类路径下,SpringBoot就不会调用默认的配置文件了;文件名是要一致的;