【小记】logback日志框架的配置和使用

2021-07-01

日志在项目中必不可少,目前流行的日志框架有log4j、log4j2、logback,其中logback和log4j作者是同一个人。logback是SpringBoot默认集成的日志框架,效率高,能适应诸多的运行环境,是SLF4J门面框架的一种实现。

添加依赖

添加依赖:在pom文件中添加spring-boot-starter-logging

<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-loggingartifactId>
dependency>

但是呢,实际开发中我们不需要直接添加该依赖,你会发现spring-boot-starter其中包含了 spring-boot-starter-logging,该依赖内容就是 Spring Boot 默认的日志框架 Logback+SLF4J。而 spring-boot-starter-web 包含了spring-boot-starte,所以我们只需要引入web组件即可。

配置文件

在resource目录下新建logback-spring.xml配置文件。


<configuration debug="true">

    
    
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        
        
        <encoder>
            
            
            
            
            
            
            
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5level) --- [%15.15(%thread)] %cyan(%-40.40(%logger{40})) : %msg%npattern>
            
            <charset>UTF-8charset>
        encoder>
    appender>

    
    
    
    
    <appender name="info_log" class="ch.qos.logback.core.rolling.RollingFileAppender">
        
        <File>logs/project_info.logFile>
        
        <append>trueappend>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERRORlevel>
            <onMatch>DENYonMatch>
            <onMismatch>ACCEPTonMismatch>
        filter>
        
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            
            
            
            <fileNamePattern>logs/project_info.%d.%i.logfileNamePattern>
            
            <maxHistory>30maxHistory>
            
            <totalSizeCap>20GBtotalSizeCap>
            
            <maxFileSize>10MBmaxFileSize>
        rollingPolicy>
        
        <encoder>
            
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level --- [%15.15(%thread)] %-40.40(%logger{40}) : %msg%npattern>
            
            <charset>UTF-8charset>
        encoder>
    appender>

    
    
    
    
    <appender name="error_log" class="ch.qos.logback.core.rolling.RollingFileAppender">
        
        <File>logs/project_error.logFile>
        
        <append>trueappend>
        
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERRORlevel>
        filter>
        
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            
            
            
            <fileNamePattern>logs/project_error.%d.%i.logfileNamePattern>
            
            <maxHistory>30maxHistory>
            
            <totalSizeCap>20GBtotalSizeCap>
            
            <maxFileSize>10MBmaxFileSize>
        rollingPolicy>
        
        <encoder>
            
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level --- [%15.15(%thread)] %-40.40(%logger{40}) : %msg%npattern>
            
            <charset>UTF-8charset>
        encoder>
    appender>

    
    
    <root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="info_log" />
        <appender-ref ref="error_log" />
    root>

    
    
    <logger name="com.sailing.springbootmybatis" level="INFO">
        <appender-ref ref="info_log" />
        <appender-ref ref="error_log" />
    logger>

    
    <logger name="com.sailing.springbootmybatis.mapper" level="DEBUG" additivity="false">
        <appender-ref ref="info_log" />
        <appender-ref ref="error_log" />
    logger>

    
    <logger name="com.atomikos" level="INFO" additivity="false">
        <appender-ref ref="info_log" />
        <appender-ref ref="error_log" />
    logger>
configuration>

在application.properties中添加logging的配置文件路径。

logging.config=classpath:logback-spring.xml

使用

如果添加了lombok依赖,则可以直接使用注解的方式获取log实例

<dependency>
	<groupId>org.projectlombokgroupId>
	<artifactId>lombokartifactId>
	<optional>trueoptional>
dependency>

例如在controller中可以这样使用:

@Controller
@Slf4j
public class HomeController {
	@RequestMapping("/")
    public String home(){
        log.info("a new visitor coming.");
        return "index";
    }
}

这样就能够按照配置文件中的配置将日志打印到控制台或者记录到文件中。

你可能感兴趣的:(SpringBoot,Java,spring,boot,java,spring)