• springboot使用logback进行日志记录


    前言

    在进行查找资料的时候,发现大都是只讲了怎么通过配置文件去配置,但是具体的流程都不是很明了,甚至,我只想要个输出日志,讲了一大堆原理不明所以,结果还是不知道该怎么做;
    因此本次将教大家如何通过使用在springboot项目中使用logback进行log日志的记录;一步一步的将该日志搭建起来,本次的日志使用的是logback,是基于springboot框架的,因此是springboot项目进行搭建。

    依赖

    既然是springboot项目,那么这次的依赖也包括springboot,以及日志依赖等
    pom.xml代码如下

    
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0modelVersion>
    
        <groupId>org.examplegroupId>
        <artifactId>项目名称artifactId>
        <version>1.0-SNAPSHOTversion>
        <parent>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-parentartifactId>
            <version>2.4.5version>
            <relativePath/> 
        parent>
        <dependencies>
        
            <dependency>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-starterartifactId>
            dependency>
            <dependency>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-starter-testartifactId>
                <scope>testscope>
            dependency>
            <dependency>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-starter-webartifactId>
            dependency>
            <dependency>
                <groupId>org.projectlombokgroupId>
                <artifactId>lombokartifactId>
            dependency>
                    
            <dependency>
                <groupId>mysqlgroupId>
                <artifactId>mysql-connector-javaartifactId>
            dependency>
            
            <dependency>
                <groupId>com.baomidougroupId>
                <artifactId>mybatis-plus-boot-starterartifactId>
                <version>3.4.3version>
            dependency>
    
            <dependency>
                <groupId>log4jgroupId>
                <artifactId>log4jartifactId>
                <version>1.2.17version>
            dependency>
            <dependency>
                <groupId>org.apache.logging.log4jgroupId>
                <artifactId>log4j-coreartifactId>
                <version>2.15.0version>
            dependency>
        dependencies>
    
        <properties>
            <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
        properties>
    
    project>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64

    log4j和logback都是同一个作者制作的,但是听说不想在log4j进行改动就新做了logback
    本次虽然使用的log4j的依赖,但是我们实际上调用的是logback的xml配置文件进行配置

    logback-spring.xml配置

    注意,本logback-spring.xml文件应放在Resources文件夹下
    在这里插入图片描述

    
    <configuration debug="false">
        
        <property name="LOG_HOME" value="将日志保存的文件夹名称"/>
    
        
        
        <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
        <conversionRule conversionWord="wex"
                        converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
        <conversionRule conversionWord="wEx"
                        converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
        
        <property name="CONSOLE_LOG_PATTERN"
                  value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
        
        <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>${CONSOLE_LOG_PATTERN}pattern>
                
                <charset>utf8charset>
            encoder>
        appender>
    
        
        <appender name="INFO_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${LOG_HOME}/info.logfile>
            <append>trueappend>
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                
                <fileNamePattern>${LOG_HOME}/info.%d{yyyy-MM-dd}.%i.logfileNamePattern>
                
                <maxHistory>60maxHistory>
                
                <maxFileSize>10MBmaxFileSize>
            rollingPolicy>
            <encoder>
                
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%npattern>
            encoder>
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>INFOlevel>
                <onMatch>ACCEPTonMatch>
                <onMismatch>DENYonMismatch>
            filter>
        appender>
    
        
        <appender name="ERROR_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${LOG_HOME}/error.logfile>
            <append>trueappend>
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                
                
                <fileNamePattern>${LOG_HOME}/error.%d{yyyy-MM-dd}.%i.logfileNamePattern>
                
                <maxHistory>60maxHistory>
                
                <maxFileSize>10MBmaxFileSize>
            rollingPolicy>
            
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>ERRORlevel>
                <onMatch>ACCEPTonMatch>
                <onMismatch>DENYonMismatch>
            filter>
            <encoder>
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%npattern>
            encoder>
        appender>
        
        <logger name="com.apache.ibatis" level="TRACE"/>
        <logger name="java.sql.Connection" level="DEBUG"/>
        
        <logger name="com.factory" level="DEBUG"/>
        <logger name="java.sql.Statement" level="DEBUG"/>
        <logger name="java.sql.PreparedStatement" level="DEBUG"/>
    
        
        <root>
            
            <level value="info" />
            <appender-ref ref="CONSOLE"/>
            <appender-ref ref="INFO_LOG"/>
            <appender-ref ref="ERROR_LOG"/>
        root>
    configuration>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90

    在这里留意appender
    你会发现我这里配置了两个,一个INFO,一个ERROR
    而且都是用appender进行配置
    如果你想添加别的配置,如debug,
    只需要做如下:

    appender name="DEBUG_LOG"
    <file>${LOG_HOME}/debug.logfile>
    <fileNamePattern>${LOG_HOME}/debug.%d{yyyy-MM-dd}.%i.logfileNamePattern>
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>DEBUGlevel>
                <onMatch>ACCEPTonMatch>
                <onMismatch>DENYonMismatch>
            filter>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    将这些部分改为DEBUG即可

    以上的配置代码,不仅仅会按天进行分割,而且在设定的文件大小会依照0,1,2,3进行排序分割
    
    • 1

    在这里插入图片描述

    yml配置

    yml关于log的配置如下:

    logging:
      level:
      # 使用debug级别进行日志输出
        com.dormitory.mapper: debug
      # 配置logback-spring.xml配置
      config: classpath:logback-spring.xml
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在类中调用

    如果需要使用它,那么具体方法如下:

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    public class ClassA {
         private Logger logger = LoggerFactory.getLogger(ClassA.class);
         // 在方法中调用
    	public void MethodsA() {
    		// info日志
         	logger.info("info");
         	// error日志
         	logger.error("error");
         	// debug日志
         	logger.debug("debug");
         	// warn日志
         	logger.warn("warn");
    	}
         }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    实际结果

    在我的项目中,我的logback-spring.xml配置的LOG_HOME为Factory_Log
    在这里插入图片描述
    于是在运行后产生的文件为:
    在这里插入图片描述
    你会发现只有两个,是因为我只配置了infoerror

    结语

    以上为springboot使用logback进行日志记录的过程

  • 相关阅读:
    【Java】JDK11特性概览
    CSS_关系选择器
    Flutter组件-Material属性
    vue常用指令的基本使用
    MongoDB 未授权访问漏洞
    谈前端测试的重要性
    【概率论基础进阶】随机变量的数字特征-矩、协方差和相关系数
    [ECCV‘22] Poseur: Direct Human Pose Regression with Transformers
    图像特征(一)
    Jieba+collections中英文混合语言文章词频统计
  • 原文地址:https://blog.csdn.net/xc9711/article/details/126368141