本专栏致力打造最硬核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是一个成熟和稳定的日志框架,是Log4j框架的继承者,具有更好的性能和更加丰富的配置选项。它可以与Spring Boot框架集成,实现日志输出到控制台或者文件。
Logback由三个模块组成:
Logback使用Logger来记录和输出日志,LoggerContext是Logger的容器,主要维护Logger和Appender的关系。
Appender用于将日志输出到不同的地方,比如控制台或者文件。
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,日志文件会按照日期进行切分。
Logback定义了五个日志级别,按照从低到高的顺序为TRACE、DEBUG、INFO、WARN、ERROR。在实际应用中,应根据需要选择适当的日志级别。
Spring Boot可以非常方便地和Logback集成,只需要在pom.xml文件中添加logback依赖即可:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
<version>2.5.2</version>
</dependency>
示例如下:
Spring Boot默认使用Logback作为日志框架,所以在添加了logback依赖之后,Spring Boot会自动识别和加载classpath下的logback.xml文件。
在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是一种将日志输出到指定文件的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是一种按照一定规则切分日志文件的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文件中。
本文介绍了在Spring Boot应用程序中集成Logback日志框架,并实现了日志文件本地保存的方法。通过上述配置和测试,我们可以看到应用程序的日志已经能够成功输出到指定的目录中。最后,需要注意的是,在配置日志文件输出时,需要根据实际需求进行日志文件切割和日志文件保存天数设置,否则可能会导致系统磁盘空间被占用过多。
👨🎓作者:bug菌 ✏️博客: CSDN、 掘金、 infoQ、 51CTO等 🎉简介:CSDN|阿里云|华为云|51CTO等社区博客专家,历届博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,掘金 | InfoQ | 51CTO等社区优质创作者,全网粉丝合计15w+ ;硬核微信公众号 「猿圈奇妙屋」 ,欢迎你的加入!免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板等海量资料.
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。