文章目录
1.基本介绍
SpringBoot默认日志框架是Logback,是对log4j升级出现的另一个开源日志组件,内核进行了重写,整体性能上比log4j突出不少。
2.使用说明
2.1 引入maven依赖
为什么我们要引入这些jar包?一个良好的项目需要正常启动
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependencOC
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
解释说明
SpringBoot中初始创建项目,引入原骨架Parent
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
在项目工程中,command+点击 spring-boot-starter-parent
会进入 spring-boot-starter-parent-2.1.5.RELEASE.pom
文件中
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.5.RELEASE</version>
<relativePath>../../spring-boot-dependencies</relativePath>
</parent>
command+点击 2.1.5.RELEASE
进入到各种包的依赖,并且规定了版本号,搜索一下,可以看到他们集成的logback包
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-access</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>${logback.version}</version>
</dependency>
2.2 创建logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<!-- 定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径 -->
<property name="LOG_HOME" value="./logs" />
<!-- 配置CONSOLE控制台文件输出项 -->
<appender name="CONSOLELOG" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!-- 格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS } [%thread] %-5level %logger{50} - %msg %n</pattern>
</encoder>
</appender>
<!-- 配置INFO文件输出项 -->
<appender name="DAYINFOLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤error日志 -->
<level>ERROR</level>
<onMatch>DENY</onMatch>
<onMismatch>ACCEPT</onMismatch>
</filter>
<!--配置滚动策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 按照每天生成日志文件 -->
<!-- 日志文件输出的文件名 -->
<FileNamePattern>${LOG_HOME}/info/%d{yyyy-MM-dd}-info-%i.log</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>30</MaxHistory>
<maxFileSize>20MB</maxFileSize>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!-- 格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<!-- 配置ERROR文件输出项 -->
<appender name="DAYERRORLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--
比较日志记录请求的Level值和ThresholdFilter中配置的Level值
当日志记录请求的Level值小于ThresholdFilter中配置的Level值,日志记录请求被判定为无效
-->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<!-- 配置滚动策略 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 按照每天生成日志文件 -->
<!-- 日志文件输出的文件名 -->
<FileNamePattern>${LOG_HOME}/error/%d{yyyy-MM-dd}-error-%i.log</FileNamePattern>
<!-- 日志文件保留天数-->
<MaxHistory>30</MaxHistory>
<maxFileSize>20MB</maxFileSize>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!-- 格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg %n</pattern>
</encoder>
</appender>
<!-- 日志输出级别 -->
<root level="INFO">
<appender-ref ref="CONSOLELOG" />
<appender-ref ref="DAYINFOLOG"/>
<appender-ref ref="DAYERRORLOG"/>
</root>
</configuration>
在resources目录下 application.yml/applitions.properties配置,由于我在resources目录下,创建config文件夹,将logback-spring.xml放在此文件夹下,所以路径有所变化。
# 日志配置
logging:
config: classpath:config/logback/logback-spring.xml
Springboot本身内置的日志功能,日志的使用方式跟我们平常使用的日志一样,但是此配置不仅可以在控制台输出,还能输出到磁盘,依据定义的策略,可以按天、大小、类型区分开来。
3.编写一个HTTP接口
- 创建package命名为com.daobili.comtroller(根据实际情况修改)
- 创建HelloController类,内容如下:
@RestController
@RequestMapping("/hello")
// 通过注解 @Slf4j 的方式
@Slf4j
public class HelloController {
/**
* 两种方式使用logback
* 1.通过创建LoggerFactory实例
* 2.通过注解 @Slf4j 的方式
*
*/
/**
* 通过创建LoggerFactory实例
*/
//private final static Logger LOGGER = LoggerFactory.getLogger(HelloController.class);
@RequestMapping("/say/{name}")
public String sayHello(@PathVariable("name") String name) {
//LOGGER.info("hello,{}",name);
log.info("使用注解的方式日志服务:sayHello:{}" + name);
return "hello " + name;
}
}
3.1 通过创建LoggerFactory实例
/**
* 通过创建LoggerFactory实例
*/
//private final static Logger LOGGER = LoggerFactory.getLogger(HelloController.class);
3.2 通过注解 @Slf4j 的方式
1.在pom文件中添加依赖,引入lombok
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
2.类添加注解
// 通过注解 @Slf4j 的方式
@Slf4j
public class HelloController {
}
- 启动主程序,打开浏览器或者Postman发起请求:
http://localhost:8080/hello/bamaw
,可以看到页面返回 hello bamaw
4.代码示例
本文的相关例子可以查看下面仓库中的目录:
-Github:https://github.com/bamaw/springboot2.x-examples
-Gitee: https://gitee.com/bamaw/springboot2.x-examples
如果您觉得本文不错,欢迎Star支持,您的关注是我坚持的动力!