• Spring Boot入门(22):【Spring Boot+LogBack】高效记录日志,实现日志文件本地化保存!


    Spring Boot整合LogBack实现日志文件本地保存

    前言

    在开发中,日志是非常重要的一部分,我们可以在日志中排查各种问题,优化程序。Spring Boot是非常流行和方便的框架,而Logback是一个非常成熟和稳定的日志框架。本文将介绍如何使用Spring Boot整合Logback来实现日志文件本地保存。

    摘要

    本文将提供一种使用Spring Boot和Logback的方法来实现日志文件本地保存,首先介绍一下Logback框架的基本知识和使用方法,然后再介绍如何将Logback和Spring Boot集成起来,最后演示如何使用Logback来记录日志并保存到本地文件中。

    Logback

    Logback是一个成熟和稳定的日志框架,是Log4j框架的继承者,具有更好的性能和更加丰富的配置选项。它可以与Spring Boot框架集成,实现日志输出到控制台或者文件。

    Logback的基本概念

    Logback由三个模块组成:

    • logback-core:提供了更低级别的功能,最基本的日志系统。
    • logback-classic:提供了更高级别的功能,比如SLF4J API的实现,支持MDC(Mapped Diagnostic Contexts)。
    • logback-access:提供了用于HTTP访问日志的功能,包括访问日志和基于XML的HTTP访问日志。

    Logback使用Logger来记录和输出日志,LoggerContext是Logger的容器,主要维护Logger和Appender的关系。

    Appender用于将日志输出到不同的地方,比如控制台或者文件。

    Logback的配置文件

    Logback的配置文件是一个XML文件,名字为logback.xml,默认放在classpath根目录下。

    下面是一个简单的logback.xml示例:

    
    
    <configuration>
    
      
      <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
          <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%npattern>
        encoder>
      appender>
    
      
      <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>log/demo.logfile>
        <encoder>
          <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%npattern>
        encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
          <fileNamePattern>log/demo.%d{yyyy-MM-dd}.logfileNamePattern>
        rollingPolicy>
      appender>
    
      
      <root level="INFO">
        <appender-ref ref="console" />
        <appender-ref ref="file" />
      root>
    
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    配置文件中定义了两个Appender,一个输出到控制台,一个输出到文件。第一个Appender的class属性设置为ConsoleAppender,表示将日志输出到控制台。第二个Appender的class属性设置为RollingFileAppender,表示将日志输出到文件。其中,文件名为log/demo.log,日志文件会按照日期进行切分。

    Logback的日志级别

    Logback定义了五个日志级别,按照从低到高的顺序为TRACE、DEBUG、INFO、WARN、ERROR。在实际应用中,应根据需要选择适当的日志级别。

    整合Spring Boot和Logback

    Spring Boot可以非常方便地和Logback集成,只需要在pom.xml文件中添加logback依赖即可:

    <dependency>
      <groupId>org.springframework.bootgroupId>
      <artifactId>spring-boot-starter-loggingartifactId>
      <version>2.5.2version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    Spring Boot默认使用Logback作为日志框架,所以在添加了logback依赖之后,Spring Boot会自动识别和加载classpath下的logback.xml文件。

    在Spring Boot中使用Logback

    在Spring Boot中使用Logback非常简单,只需要在代码中使用Logger输出日志即可。LoggerFactory是Logback提供的工厂类,可以用来获取Logger实例。

    下面是一个简单的示例:

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    public class Demo {
    
      private static final Logger logger = LoggerFactory.getLogger(Demo.class);
    
      public void test() {
        logger.info("Hello, world!");
      }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    上面代码中,我们定义了一个Demo类,并使用LoggerFactory获取了一个Logger实例。在test方法中,我们使用Logger输出一条日志。

    配置日志级别

    默认情况下,Spring Boot的日志输出级别为INFO,如果要修改日志输出级别,可以在application.properties或application.yml文件中添加如下配置:

    logging.level.=
    
    • 1

    其中,表示要设置日志级别的包名,表示要设置的日志级别,可以是TRACE、DEBUG、INFO、WARN、ERROR。例如,要将org.springframework包下的日志级别设置为DEBUG,可以添加如下配置:

    logging.level.org.springframework=DEBUG
    
    • 1

    日志文件本地保存

    除了将日志输出到控制台之外,我们还可以将日志保存到文件中。Logback可以通过FileAppender或者RollingFileAppender来实现日志文件本地保存。

    FileAppender

    FileAppender是一种将日志输出到指定文件的Appender。下面是一个FileAppender的示例:

    <appender name="file" class="ch.qos.logback.core.FileAppender">
      <file>logs/demo.logfile>
      <encoder>
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%npattern>
      encoder>
    appender>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    上面的示例中,我们定义了一个名为file的Appender,在logs/demo.log文件中保存日志。pattern属性定义了日志输出的格式。

    RollingFileAppender

    RollingFileAppender是一种按照一定规则切分日志文件的Appender。它可以按照时间、文件大小等规则来切分日志文件。下面是一个RollingFileAppender的示例:

    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
      <file>logs/demo.logfile>
      <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
        <fileNamePattern>logs/demo.%d{yyyy-MM-dd}.%i.log.gzfileNamePattern>
        <maxFileSize>10MBmaxFileSize>
        <maxHistory>30maxHistory>
      rollingPolicy>
      <encoder>
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%npattern>
      encoder>
    appender>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    上面的示例中,我们定义了一个名为file的Appender,使用了SizeAndTimeBasedRollingPolicy进行日志文件切分。fileNamePattern属性定义了日志文件名的格式,%d{yyyy-MM-dd}表示按照日期切分,%i表示文件索引号(如果文件大小超过了10MB,则会切分为新的文件,索引号会+1)。maxFileSize属性定义了每个日志文件的最大大小,maxHistory属性定义了保留的日志文件数量。

    测试用例

    下面给出一个简单的测试用例:

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    public class DemoApplication {
    
      private static final Logger logger = LoggerFactory.getLogger(DemoApplication.class);
    
      public static void main(String[] args) {
        logger.info("Hello, world!");
      }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在运行该测试用例之后,日志信息会被输出到控制台和logs/demo.log文件中。

    全文小结

    本文介绍了在Spring Boot应用程序中集成Logback日志框架,并实现了日志文件本地保存的方法。通过上述配置和测试,我们可以看到应用程序的日志已经能够成功输出到指定的目录中。最后,需要注意的是,在配置日志文件输出时,需要根据实际需求进行日志文件切割和日志文件保存天数设置,否则可能会导致系统磁盘空间被占用过多。

  • 相关阅读:
    PyG搭建R-GCN实现链接预测
    cdo入门
    Java NIO中的Files类的使用
    【Quark RISC-V】流水线CPU设计(5)控制冒险的处理
    linux安装docker-compose
    你入职的时候一定要问领导要的maven私服配置文件,它是什么?Nexus入门使用指南
    自动跳过APP启动页广告
    Prometheus安装部署和Exporter集成
    docker安装
    C基础-操作符详解
  • 原文地址:https://blog.csdn.net/weixin_66592566/article/details/132526589