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配置。