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.log</fileNamePattern>
        
      • ${LOG_HOME}这种变量是在yml文件中定义,在此文件中引用并使用在这里。

    • error:

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

<?xml version="1.0" encoding="UTF-8" ?>
<configuration scan="true" scanPeriod="10 seconds">
    <contextName>logback</contextName>
    <!--日志路径:在yml文件中找到对应的配置项-->
    <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"/>
    <!--root日志级别-->
    <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">
        <!--此日志appender是为开发使用,只配置最低级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>debug</level>
        </filter>
        <encoder>
            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
            <!--设置字符串-->
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!--level为 INFO 日志,时间滚动输出-->
    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--正在记录的日志文档的路径及文档名-->
        <!--        <file>${LOG_HOME}/${LOG_NAME}/${LOG_NAME}_info</file>-->
        <!--日志文档输出格式-->
        <encoder>
            <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</Pattern>
            <!--设置字符串-->
            <charset>UTF-8</charset>
        </encoder>
        <!--日志记录器的滚动策略,按日期,按大小记录-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--每天日志归档路径以及格式-->
            <!--日志文件路径:这里的%d{yyyy-MM-dd}表示按天分类日志-->
            <fileNamePattern>${LOG_HOME}/${LOG_NAME}/${LOG_NAME}_info/${LOG_NAME}-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!--一个文件最大存储空间-->
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文档保留60天-->
            <maxHistory>60</maxHistory>
        </rollingPolicy>
        <!--此日志文档只记录info级别的-->
        <!--        <filter class="ch.qos.logback.classic.filter.LevelFilter">-->
        <!--            <level>info</level>-->
        <!--            <onMatch>ACCEPT</onMatch>-->
        <!--            <onMismatch>DENY</onMismatch>-->
        <!--        </filter>-->
    </appender>

    <!--level为 ERROR 日志,时间滚动输出-->
    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--正在记录的日志文档的路径及文档名-->
        <!--        <file>${LOG_HOME}/${LOG_NAME}/${LOG_NAME}_error</file>-->
        <!--日志文档输出格式-->
        <encoder>
            <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</Pattern>
            <!--设置字符串-->
            <charset>UTF-8</charset>
        </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.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文档保留60天-->
            <maxHistory>60</maxHistory>
        </rollingPolicy>
        <!--此日志文档只记录error级别的-->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>error</level>
            <!--接受匹配-->
            <onMatch>ACCEPT</onMatch>
            <!--拒绝不匹配的-->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <root level="${LOG_ROOT_LEVEL}">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="INFO_FILE"/>
        <appender-ref ref="ERROR_FILE"/>
    </root>
</configuration>

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

# 日志配置
logPath: /home/logs
logName: ruoyi-admin
logBusinessLevel: info
logRootLevel: info

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

细看,需要改动的地方

# 这里相当于宿主机与容器关联的文件夹,路径要与项目中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

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值