springboot框架在企业中的使用越来越普遍,springboot日志也是开发中常用的日志系统。springboot默认就是使用SLF4J作为日志门面,logback作为日志实现来记录日志。
SpringBoot中的日志设计:
<!-- 不需要手动引入,springboot框架自带引入 --> <dependency> <artifactId>spring-boot-starter-logging</artifactId> <groupId>org.springframework.boot</groupId> </dependency>
总结:
1. springboot 底层默认使用logback作为日志实现。
2. 使用了SLF4J作为日志门面
3. 将JUL也转换成slf4j
4. 也可以使用log4j2作为日志门面,但是最终也是通过slf4j调用logback
SpringBoot日志使用:
@RunWith(SpringRunner.class) @SpringBootTest(classes = Application.class) public class LoggerTest { private static final Logger LOGGER = LoggerFactory.getLogger(Application.class); @Test public void contextLoads() { //打印日志信息 LOGGER.error("error"); LOGGER.warn("warn"); LOGGER.info("info"); // 默认日志级别 LOGGER.debug("debug"); LOGGER.trace("trace"); } }
修改默认日志配置:application.properties
# 指定自定义 logger 对象日志级别 logging.level.pers.fgy=trace # 在控制台输出的日志的格式 同logback logging.pattern.console=[%-5level] %d{yyyy-MM-dd HH:mm:ss} %c [%thread]===== %msg %n # 指定存放日志文件的具体路径 此配置方式已过期 #logging.file=d:/logs/springboot.log # 指定日志文件存放的目录,默认的文件名 spring.log logging.file.path=d:/logs/springboot/
# 指定日志文件消息格式 logging.pattern.file=[%-5level] %d{yyyy-MM-dd HH:mm:ss} %c [%thread]===== %msg %n
指定配置:
给类路径下放上每个日志框架自己的配置文件,SpringBoot就不使用默认配置了
当使用SpringBoot解析日志配置时,可以在配置文件中定义不同的日志输出格式,这样在开发环境和线上环境就可以自由切换日志输出格式,而不用修改配置文件
<!--控制台日志输出的目的地appender--> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <!--控制输出流对象 默认 System.out(黑色字体) 改为 System.err(红色字体)--> <target>System.err</target> <!--日志消息格式配置--> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <springProfile name="dev"> <pattern>${pattern}</pattern> </springProfile> <springProfile name="pro"> <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] ==== %m%n</pattern> </springProfile> </encoder> </appender>
通过 application.properties 配置文件切换日志输出格式:spring.profiles.active=dev
将日志切换为log4j2:
1.修改pom文件
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!--排除logback--> <exclusions> <exclusion> <artifactId>spring-boot-starter-logging</artifactId> <groupId>org.springframework.boot</groupId> </exclusion> </exclusions> </dependency> <!-- 添加log4j2 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency>
2.引入 log4j2 的配置文件即可,代码不需要改变,因为使用的是 slf4j 日志门面
lombok插件中的 @Slf4j :
在类上使用此注解可以省略一行代码:private static final Logger LOGGER = LoggerFactory.getLogger(Application.class);
直接使用 log 变量,不需要声明
//打印日志信息 log.error("error"); log.warn("warn"); log.info("info"); // 默认日志级别 log.debug("debug"); log.trace("trace");