【Spring Boot+LogBack】高效记录日志,实现日志文件本地化保存!
  HptQjPcX5vAL 2023年11月02日 60 0

在这里插入图片描述


🏆本文收录于《Spring Boot从入门到精通》,专门攻坚指数提升,2023 年国内最系统+最强(更新中)。

本专栏致力打造最硬核Spring Boot 系列教程,从零基础到进阶系列学习内容,🚀均为全网独家首发,打造精品专栏,专栏持续更新中…欢迎大家订阅持续学习。

环境说明:Windows10 + Idea2021.3.2 + Jdk1.8 + SpringBoot 2.3.1.RELEASE

前言

在开发中,日志是非常重要的一部分,我们可以在日志中排查各种问题,优化程序。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示例:

<?xml version="1.0" encoding="UTF-8"?>

<configuration>

  <!-- 输出到控制台 -->
  <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>

  <!-- 输出到文件 -->
  <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>log/demo.log</file>
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>log/demo.%d{yyyy-MM-dd}.log</fileNamePattern>
    </rollingPolicy>
  </appender>

  <!-- 设置日志输出级别 -->
  <root level="INFO">
    <appender-ref ref="console" />
    <appender-ref ref="file" />
  </root>

</configuration>

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

Logback的日志级别

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

整合Spring Boot和Logback

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

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-logging</artifactId>
  <version>2.5.2</version>
</dependency>

示例如下: image.png

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!");
  }

}

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

配置日志级别

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

logging.level.<package>=<level>

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

logging.level.org.springframework=DEBUG

日志文件本地保存

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

FileAppender

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

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

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

RollingFileAppender

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

<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <file>logs/demo.log</file>
  <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
    <fileNamePattern>logs/demo.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
    <maxFileSize>10MB</maxFileSize>
    <maxHistory>30</maxHistory>
  </rollingPolicy>
  <encoder>
    <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
  </encoder>
</appender>

上面的示例中,我们定义了一个名为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!");
  }

}

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

附录源码

  如上涉及所有源码均已上传同步在「GitHub」,提供给同学们一对一参考学习,辅助你更迅速的掌握。

全文小结

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

☀️建议/推荐你


无论你是计算机专业的学生,还是对编程有兴趣的小伙伴,都建议直接毫无顾忌的学习此专栏「滚雪球学Spring Boot」,从入门到精通,凡是学习此专栏的同学,均能获取到所需的知识和技能,全网最快速入门SpringBoot,就像滚雪球一样,越滚越大,指数级提升。

  最后,如果这篇文章对你有所帮助,帮忙给作者来个一键三连,关注、点赞、收藏,您的支持就是我坚持写作最大的动力。

  同时欢迎大家关注公众号:「猿圈奇妙屋」 ,以便学习更多同类型的技术文章,免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板、技术文章Markdown文档等海量资料。

📣关于我

我是bug菌,CSDN | 掘金 | InfoQ | 51CTO 等社区博客专家,历届博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,华为云 | 阿里云| 腾讯云等社区优质创作者,全网粉丝合计15w+ ;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板等海量资料。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
HptQjPcX5vAL