SpringBoot进阶之日志集成(logback)
SpringBoot进阶之日志集成(logback)
前言
大家好,一直以来我都本着 用最通俗的话理解核心的知识点, 我认为所有的难点都离不开 「基础知识」 的铺垫
适合人群
- 学完Java基础
- 想通过Java快速构建web应用程序
- 想学习或了解SpringBoot
「大佬可以绕过 ~」
背景
如果你是一路看过来的,很高兴你能够耐心看完。之前带大家学了Springboot基础部分,对基本的使用有了初步的认识, 接下来的几期内容将会带大家进阶使用,会先讲解基础中间件的使用和一些场景的应用,或许这些技术你听说过,没看过也没关系,我会带大家一步一步的入门,耐心看完你一定会有收获~
情景回顾
上期带大家学习了什么是跨域以及Springboot中如何处理它, 本期将带大家学习SpringBoot中如何集成日志工具,同样的,我们集成到Springboot中。最近github可能会被墙,所以我把源码放到了国内gitee上,本节我们依然使用上期的代码
往期内容
- 我的博客
- Springboot入门
- Springboot基础(一)
- Springboot基础(二)
- Springboot基础(三)
- Springboot基础(四)
- Springboot基础(五)
- SpringBoot进阶之缓存中间件Redis
- SpringBoot进阶之MyBatis分页插件
- SpringBoot进阶之跨域问题处理(CORS)
项目源码(持续更新)
- springboot-all
环境搭建
本期没有太多的理论,大家跟着配就好了, 添加配置 resources/logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
<!--应用名称-->
<property name="APP_NAME" value="app"/>
<!--日志文件保存路径-->
<property name="LOG_FILE_PATH" value="./logs"/>
<contextName>${APP_NAME}</contextName>
<!--每天记录日志到文件appender-->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_FILE_PATH}/${APP_NAME}-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
</configuration>
配置好后, 我们运行项目,会发现跟目录多了一个logs的目录,那个就是日志文件,跟控制台产生的日志一样,被记录到文件里了。然后教大家怎么去打日志:
@RestController
@RequestMapping("/v1")
public class HelloController {
private static final Logger logger = LoggerFactory.getLogger(HelloController.class);
@RequestMapping("/hello")
public String hello(){
logger.info("hello");
return "Hello World!" + name + version;
}
}
请求后发现控制台有打印,并且文件有记录,那么就成功了~ 依次类推,在你觉得需要记录的位置,进行日志记录就可以了,比如一些报错的地方或者一些关键点的地方
配置sql记录
有时候,我们需要查看sql怎么执行的,但控制台啥输出没有可不行,下面教大家配一下:
mybatis:
mapper-locations:
- classpath:mapper/*.xml
configuration:
cache-enabled: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
配置好后,执行一下查询请求,会发现控制台有详细的sql log包括入参的值
结束语
本期就到这里结束了,总结一下,主要教大家如何在项目中配置log,因为我们的服务是跑在服务器上的,具体发生了啥,我们不知道,只能依赖log,所以还是比较重要的
下期预告
有时候,我们需要了解一个请求发生了啥,通常会在控制器里各种log打印,这样对代码维护不是很友好,下期教大家如何利用aop去全局拦截我们的请求,并对它做解析,记录请求的各种信息,并计入日志, 方便我们去定位问题。关注我,不迷路, 下期见 ~