失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > SpringBoot整合Logback日志框架+Slf4j注解使用

SpringBoot整合Logback日志框架+Slf4j注解使用

时间:2021-08-07 15:53:39

相关推荐

SpringBoot整合Logback日志框架+Slf4j注解使用

文章目录

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注解使用》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。