SpringCloud使用logback日志框架教程详解
什么是logback框架
logback是一个日志框架,是log4j框架的改良版本。它适用于不同的使用场景,比如说,在代码最初的调试阶段,我们需要将日志输出到控制台;在代码运行时,我们需要将日志写入到日志文件;在开发过程中,我们需要根据调试级别不同,输出不同级别的日志。logback框架可以满足这些需求。
logback在SpringCloud中的应用
在SpringCloud项目中,我们希望将各个服务的日志输出到一起,以便更好地监控项目运行状态。为了实现这个目标,我们需要在所有服务中使用同一套日志框架,同时设计好日志系统的日志级别、输出位置等配置。
以下是SpringCloud项目中使用logback框架的步骤:
第一步、在pom.xml文件中添加logback相关依赖
<!-- logback依赖 -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.11</version>
</dependency>
第二步、在resources文件夹下创建一个logback.xml文件
该文件告诉logback系统将日志输出到哪里以及输出的格式。以下是一个示例:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 日志输出到控制台 -->
<appender name="stdout" 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>${catalina.home}/logs/demo.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${catalina.home}/logs/demo.log.%d{yyyy-MM-dd}.%i.gz</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- 每个日志文件的最大大小为100MB -->
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- 配置日志的输出级别 -->
<root level="INFO">
<appender-ref ref="stdout" />
<appender-ref ref="file" />
</root>
</configuration>
上面的配置文件将日志分别输出到控制台和文件中,格式为“时间-线程名-日志级别-日志名称-日志内容”。其中,日志级别分为五个等级:TRACE,DEBUG,INFO,WARN,ERROR,可以根据需要进行修改。
第三步、修改SpringBoot项目启动脚本
在SpringBoot项目的启动脚本中,需要加上如下JVM参数,指定日志配置文件和日志级别:
java -Dlogging.config=path/to/logback.xml -Dlogging.level.org.springframework=INFO -jar app.jar
其中,路径需要根据实际情况进行修改。
示例一
以下是在SpringBoot项目中使用logback输出日志的示例:
package com.example.demo.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class LogController {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@GetMapping("/log")
public String log() {
logger.info("This is a info log.");
logger.debug("This is a debug log.");
logger.warn("This is a warn log.");
logger.error("This is a error log.");
return "Log finished.";
}
}
该控制器中,使用LoggerFactory的静态方法getLogger获得一个Logger实例,然后使用该实例的不同方法输出不同级别的日志。需要注意的是,Logger实例的名称参数应该填写控制器类的全限定名,以便于在控制台和日志文件中快速定位日志来源。
示例二
以下是在SpringCloud项目的配置文件中配置logback日志级别的示例:
logging:
path: /var/applog
level:
com.example.demo: DEBUG
上述示例的意思是,将com.example.demo包下的日志级别配置为DEBUG级别,输出到/var/applog路径下。
总结
使用logback框架可以方便地实现日志输出到控制台和文件中,根据日志级别输出不同类型的日志,并且在SpringCloud项目中,使用相同的日志框架可以更加便捷地监控项目运行状态和排查问题。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringCloud使用logback日志框架教程详解 - Python技术站