SpringBoot进阶之日志集成(logback)

SpringBoot进阶之日志集成(logback)

精选文章moguli202025-05-04 16:13:5714A+A-

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去全局拦截我们的请求,并对它做解析,记录请求的各种信息,并计入日志, 方便我们去定位问题。关注我,不迷路, 下期见 ~

点击这里复制本文地址 以上内容由莫古技术网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

莫古技术网 © All Rights Reserved.  滇ICP备2024046894号-2