文章目录
1.基本介绍2.使用说明2.1 引入maven依赖2.2 创建logback-spring.xml3.编写一个HTTP接口3.1 通过创建LoggerFactory实例3.2 通过注解 @Slf4j 的方式4.代码示例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命名为troller(根据实际情况修改)创建HelloController类,内容如下:@RestController@RequestMapping("/hello")// 通过注解 @Slf4j 的方式@Slf4jpublic 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 的方式@Slf4jpublic class HelloController {}
启动主程序,打开浏览器或者Postman发起请求:http://localhost:8080/hello/bamaw
,可以看到页面返回 hello bamaw
4.代码示例
本文的相关例子可以查看下面仓库中的目录:
-Github:/bamaw/springboot2.x-examples
-Gitee:/bamaw/springboot2.x-examples
如果您觉得本文不错,欢迎Star支持,您的关注是我坚持的动力!
如果觉得《SpringBoot整合Logback日志框架+Slf4j注解使用》对你有帮助,请点赞、收藏,并留下你的观点哦!