Logback是由log4j创始人设计的又一个开源日志组件。可用于项目日志功能。官网地址
第1步:添加坐标依赖
<!--logback-->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.4.14</version>
</dependency>
logback里依赖了slf4j,就不用单独添加slf4j坐标了
第2步:创建logback配置文件
在resources目录下创建logback文件夹,并创建dev.xml,pro.xml两个配置文件,用于配置开发环境和生产环境的logback配置。目录结构像这样:
第3步:在application.yaml中根据运行环境读取logback配置
#日志配置
logging:
config: classpath:logback/${spring.profiles.active}.xml #根据运行环境读取日志配置
第4步:配置logback/dev.xml文件(开发环境的日志配置)
开发环境中,可以将日志打印在控制台。
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!-- 设置控制台彩色日志格式,注意:%L打印行号对性能有影响,因此不建议在生产环境使用。 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
<conversionRule conversionWord="wEx"
converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
<property name="CONSOLE_LOG_PATTERN"
value="%clr([%d{HH:mm:ss}){faint} %clr(%p) %clr(%.10t]){faint} %clr(%C{39}){cyan} %clr(%M:%L){magenta}: %m%n%wEx"/>
<!--设置输出到控制台-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder" charset="UTF-8">
<!-- 设置输出到控制台的日志格式 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<!--设置日志级别-->
<root level="INFO">
<appender-ref ref="CONSOLE"/>
</root>
</configuration>
第5步:配置logback/pro.xml文件(生成环境的日志配置)
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!-- 应用名称 -->
<springProperty scope="context" name="springApplicationName" source="spring.application.name"
defaultValue="spring"/>
<!-- 环境 -->
<springProperty scope="context" name="springProfilesActive" source="spring.profiles.active" defaultValue="pro"/>
<!-- 重启后是否删除日志 -->
<springProperty scope="context" name="cleanHistoryOnStart"
source="logging.logback.rollingpolicy.clean-history-on-start" defaultValue="true"/>
<!-- 单个日志文件的大小 -->
<springProperty scope="context" name="maxFileSize" source="logging.logback.rollingpolicy.max-file-size"
defaultValue="10MB"/>
<!-- 日志总文件最大值 -->
<springProperty scope="context" name="totalSizeCap" source="logging.logback.rollingpolicy.total-size-cap"
defaultValue="50GB"/>
<!-- 日志保留时长 (天) -->
<springProperty scope="context" name="maxHistory" source="logging.logback.rollingpolicy.max-history"
defaultValue="30"/>
<!-- 日志文件路径 -->
<springProperty scope="context" name="path" source="logging.file.path"
defaultValue="./log/${springApplicationName}/${springProfilesActive}"/>
<contextName>${springApplicationName}</contextName>
<property name="PATTERN_FILE" value="%d{yyyy/MM/dd-HH:mm:ss} %-5level [%thread] %class{5}:%line>>%msg%n"/>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${path}/%d{yyyy-MM-dd}/%i.log</fileNamePattern>
<totalSizeCap>${totalSizeCap}</totalSizeCap>
<maxHistory>${maxHistory}</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>${maxFileSize}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!-- 重启项目后删除日志 -->
<cleanHistoryOnStart>${cleanHistoryOnStart}</cleanHistoryOnStart>
</rollingPolicy>
<encoder>
<pattern>${PATTERN_FILE}</pattern>
</encoder>
</appender>
<!--设置日志级别-->
<root level="WARN">
<appender-ref ref="FILE"/>
</root>
</configuration>
第6步:测试日志输出
在Controller中编写测试代码:
import ch.qos.logback.classic.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/")
public class HomeController {
private static final Logger logger = (Logger) LoggerFactory.getLogger(HomeController.class);
@GetMapping("/")
public String index() {
logger.debug("【Debug】- Hello.");
logger.info("【Info】- Hello.");
logger.warn("【Warn】- Hello.");
logger.error("【Error】- Hello.");
return "index";
}
}
1.测试开发环境:
在application.yaml文件中,配置:
spring:
profiles:
active: dev
运行项目,访问对应的地址,即可看到控制台日志输出:
2.测试生产环境:
在application.yaml文件中,配置:
spring:
profiles:
active: pro
运行项目,访问对应的地址,即可看到对应目录下的日志输出:
这个日志存放路径,可以根据logback/pro.xml中fileNamePattern配置。