简单介绍
市面上常见的日志框架
SpringBoot底层是使用Spring框架,Spring默认使用JCL,SpringBoot使用SLF4J和logback
SLF4J使用
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@SpringBootApplication
public class test {
public static void main(String[] args) {
Logger logger= LoggerFactory.getLogger(test.class);
logger.info("日志输出");
SpringApplication.run(test.class, args);
}
}
日志记录方法的调用,不应该直接调用日志的实现类,而是调用日志抽象层里面的方法;
下面这是一张市面上日志框架的关系图!
这里的适配层是有SLF4J提供的,为了适配比SLF4J要早的的日志框架
这里有这么多的日志实现框架,那么这里日志框架的配置是用什么日志实现框架,配置就写谁的;
这里日志框架一大堆,就会产生一些问题:
Spring(commons-logging)、Hibernate(jboss-logging)…这里需要统一日志记录即使别的日志框架和我一起统一使用slf4j进行统一日志输出,下面这张图介绍了实现的原理
代码中的实现
- 将整合的其他框架中不匹配的日志框架排除
- 用上面图中介绍的中间包替换原有的日志框架
- 导入slf4j的其他统一实现框架
SpringBoot的日志实现框架是
<dependency>//SpringBoot的核心依赖,
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
//Shift+Ctrl+Alt+U打开依赖图,找到spring-boot-starter-web-->spring-boot-starter-->spring-boot-starter-logging
<dependency>//SpringBoot的默认日志框架实现就是logging依赖
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>
这是SpringBoot中根据上面的整合图实现的方式
- SpringBoot底层是直接使用slf4g+logback的方式进行日志记录
- SpringBoot也把其他的日志都替换成slf4j
- 中间替换包
- 如果整合的其他框架中用的不是slf4j那么就要把他的默认日志框架一处
SpringBoot能自定适配所有的日志,而且底层使用slf4j+logback的方式记录日志,引入其他框架的时候只需要排除这个框架依赖的日志框架即可;
上手使用
class SpringbootConfig02ApplicationTests {
Logger logger=LoggerFactory.getLogger(getClass());
@Test
void contextLoads() {
//日志级别
//由低到高trace<debug<info<warn<error
//这些级别都可以在配置文件中调整输出,SpringBoot默认是info级别的
logger.trace("跟踪轨迹级别--trace");
logger.debug("调试级别--debug");
logger.info("自定义信息级别--info");
logger.warn("警告级别--warn");
logger.error("异常级别--error");
}
}
配置文件中
logging.level.com.tao=trace
//将com.tao这个包下的日志输出级别设置为trace,没有指定的包那么就用root级别,也就是SpringBoot的默认级别
server.port=8080
logging.level.com.tao=trace
#不指定path路径在当前项目下生成springboot.log日志
#当然也可以指定完整的路径 logging.file=G:/springboot.log
#logging.file=springboot.log
#在当前磁盘的根路径下创建spring文件夹和里面的log文件夹,使用spring.log职位默认文件
logging.path=/spring/log
#在控制台输出的日志格式
logging.pattern.console=%d{yyyy-MM-dd} [%thread] %-5level %logging{50} -%msg%n
#默认格式
#2020-05-16 22:49:42.943 TRACE 13324 --- [ main] c.t.s.SpringbootConfig02ApplicationTests : 跟踪轨迹级别--trace
#2020-05-16 22:49:42.943输出时间,TRACE日志级别 13324线程ID [ main] 线程名 c.t.s.SpringbootConfig02ApplicationTests全类名 跟踪轨迹级别--trace 输出信息
#在日志文件中输出的格式
logging.pattern.file=%d{yyyy-MM-dd} ==== [%thread]==== %-5level ==== %logging{50} ==== -%msg%n
#修改默认格式后的控制台和日志文件中的输出
#2020-05-16 [main] TRACE %PARSER_ERROR[logging] -跟踪轨迹级别--trace
#2020-05-16 ==== [main]==== TRACE ==== %PARSER_ERROR[logging] ==== -跟踪轨迹级别--trace
这里可以使用xml设置更多的格式,具体的日志框架实现使用自己的xml日志框架扩展名,xml输出格式配置文件放在resources目录下即可,这里SpringBoot建议使用logback-spring.xml可以使用SpringBoot的环境区分功能可以指定某些日志只在某些环境中输出,这里详细自己百度
指定输出目录
在resource目录下创建application.properties文件
logging.config=classpath:logback.xml
logging.path=/home/developer/app/logs/