• SpringBoot配置输出的日志文件


    SpringBoot配置输出的日志文件

    1、无需导入依赖,因为我们创建springboot时,导入的关于springboot的依赖中已经包含了。

    2、我们在项目的resources 资源文件下创建logback.xml文件,文件内容如下

    作用:

    • 如果是开发时启动的项目,控制台会将相应的关键字彩绘。

    • 如果是将项目部署,会输出两个日志文件,一个是info及其以上的内容都输出,一个是error级别的才会输出

    • 会将日志文件保存近60天的,即会按照时间去存储当天对应的日志内容。共保存60天的,超过后会将60天以前的删除

    • 路径:因为下面是两个级别的日志输出,所以都对应不同路径才显得明了

      • info:

        • <fileNamePattern>${LOG_HOME}/${LOG_NAME}/${LOG_NAME}_info/${LOG_NAME}-%d{yyyy-MM-dd}.%i.logfileNamePattern>
          
          • 1
        • ${LOG_HOME}这种变量是在yml文件中定义,在此文件中引用并使用在这里。

      • error:

        • <fileNamePattern>${LOG_HOME}/${LOG_NAME}/${LOG_NAME}_error/${LOG_NAME}-error-%d{yyyy-MM-dd}.%i.logfileNamePattern>
          
          • 1
        • 和上面的路径大同小异,不过要想布置成功,这里只是第一步,如果是使用docker容器去部署项目,下面还有更重要的需要设置。

    
    <configuration scan="true" scanPeriod="10 seconds">
        <contextName>logbackcontextName>
        
        <springProperty scope="context" name="LOG_HOME" source="logPath"/>
        
        <springProperty scope="context" name="LOG_NAME" source="logName"/>
        
        <springProperty scope="context" name="LOG_BUSINESS_LEVEL" source="logBusinessLevel"/>
        
        <springProperty scope="context" name="LOG_ROOT_LEVEL" source="logRootLevel"/>
    
        
        <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{${LOG_DATEFORMAT_PATTERN:-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">
            
            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <level>debuglevel>
            filter>
            <encoder>
                <Pattern>${CONSOLE_LOG_PATTERN}Pattern>
                
                <charset>UTF-8charset>
            encoder>
        appender>
    
        
        <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            
            
            
            <encoder>
                <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%nPattern>
                
                <charset>UTF-8charset>
            encoder>
            
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                
                
                <fileNamePattern>${LOG_HOME}/${LOG_NAME}/${LOG_NAME}_info/${LOG_NAME}-%d{yyyy-MM-dd}.%i.logfileNamePattern>
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    
                    <maxFileSize>100MBmaxFileSize>
                timeBasedFileNamingAndTriggeringPolicy>
                
                <maxHistory>60maxHistory>
            rollingPolicy>
            
            
            
            
            
            
        appender>
    
        
        <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            
            
            
            <encoder>
                <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%nPattern>
                
                <charset>UTF-8charset>
            encoder>
            
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                
                <fileNamePattern>${LOG_HOME}/${LOG_NAME}/${LOG_NAME}_error/${LOG_NAME}-error-%d{yyyy-MM-dd}.%i.logfileNamePattern>
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>100MBmaxFileSize>
                timeBasedFileNamingAndTriggeringPolicy>
                
                <maxHistory>60maxHistory>
            rollingPolicy>
            
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>errorlevel>
                
                <onMatch>ACCEPTonMatch>
                
                <onMismatch>DENYonMismatch>
            filter>
        appender>
    
        <root level="${LOG_ROOT_LEVEL}">
            <appender-ref ref="CONSOLE"/>
            <appender-ref ref="INFO_FILE"/>
            <appender-ref ref="ERROR_FILE"/>
        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
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99

    3、资源文件需要定义的变量:

    # 日志配置
    logPath: /home/logs
    logName: ruoyi-admin
    logBusinessLevel: info
    logRootLevel: info
    
    • 1
    • 2
    • 3
    • 4
    • 5

    4、到这里,关于项目的配置都好了,接下来是关于jenkins的,如果你是通过这个进行的自动化部署且使用docker进行存放项目。

    在这里插入图片描述

    我们需要改动的地方就这里。

    docker stop ruoyi-admin || true 
    docker rm ruoyi-admin || true
    docker rmi ruoyi-admin || true
    docker build -t ruoyi-admin ruoyi-admin/
    mkdir -p common/logs/ruoyi-admin
    chmod 777 -R common/logs/ruoyi-admin
    docker run -d -p 9999:9999  -v /common/logs/ruoyi-admin:/home/logs/ruoyi-admin --net mynet --name ruoyi-admin ruoyi-admin
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    细看,需要改动的地方

    # 这里相当于宿主机与容器关联的文件夹,路径要与项目中yml设置的路径相同,除了开始的home变成common外。
    # 其次,在最末尾加上项目名,也就是项目的yml文件中你设置的logName变量值,这样是为了区分各个项目的日志文件
    mkdir -p common/logs/ruoyi-admin 
    # 将文件夹提升权限,否则可能无法写入
    chmod 777 -R common/logs/ruoyi-admin
    # /common/logs/ruoyi-admin:/home/logs/ruoyi-admin:路径映射要正确,容器的路径最好是yml文件中
    # logPath + logName 的值,即:/home/logs/ruoyi-admin,作用还是区分项目。
    # 这里的路径一定要与 logback 文件中设置的开头共有路径一样
    # logback.xml:${LOG_HOME}/${LOG_NAME}/${LOG_NAME}_error/${LOG_NAME}-error-%d{yyyy-MM-dd}.%i.log
    # 我们取 ${LOG_HOME}/${LOG_NAME} 作为项目的共有路径,即 /home/logs/ruoyi-admin
    docker run -d -p 9999:9999  -v /common/logs/ruoyi-admin:/home/logs/ruoyi-admin --net mynet --name ruoyi-admin ruoyi-admin
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    5、最后,如果都配置正确,会有如下文件:

    common
    	 logs
    	  	ruoyi-admin
    	  		ruoyi-admin_error
    	  			ruoyi-admin-error-2023-10-11.0.log
    	  		ruoyi-admin_info
    	  			ruoyi-admin-2023-10-11.0.log
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    滴滴 Redis 异地多活的演进历程
    Scss
    Linux-操作1(替换文本内容)
    数据库的基本概念
    4-7:用Redis优化登陆模块
    链式二叉树的基本操作(C语言实现)
    STM32个人笔记-定时器
    nn.embedding函数详解(pytorch)
    nginx-日志
    程序猿的中秋原来可以这样过
  • 原文地址:https://blog.csdn.net/qq_43483251/article/details/133774548