springboot项目配置logback日志输出

工作中自己搭建了一个springboot项目,整合了mybatis和链接oracle数据库ojdbc,JDK版本是1.7。为了更好的维护项目,需要配置日志输出,我采用的是logback日志,通过搜索相关信息,自己研究了一套日志输出配置,经过测试可以使用。

注:自己技术还不够,有问题的地方请大牛不吝指教。

这套配置的日志输出会按日志级别(TRACE < DEBUG < INFO < WARN < ERROR < FATAL)在不同级别的文件夹下输出日志,并且会按天进行日志切割,每个日志文件最大是50MB(超出会删除旧数据),切割后的日志数量是30个(超出会删除旧日志文件)。每个文件夹下面的日志总大小为2GB(每个日志文件的大小*日志数量 <= 总大小),超出大小会删除旧数据。

注意:日志总大小好像只可以使用整数,我配置了1.5GB后启动会抛异常。

下面是具体的日志XML文件:

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="5 seconds" debug="false">
    <contextName>logback</contextName>
    <!-- 配置日志输出路径(注:放到服务器上后记得更改路径) -->
    <property name="log.split.path" value="F:\\log-test\\" />
    <!-- 配置日志名称 -->
    <property name="log.path" value="logback.log" />
    <!-- 配置切割后的debug日志输出路径 -->
    <property name="log.debug.path" value="debug" />
    <!-- 配置切割后的info日志输出路径 -->
    <property name="log.info.path" value="info" />
    <!-- 配置切割后的warn日志输出路径 -->
    <property name="log.warn.path" value="warn" />
    <!-- 配置切割后的error日志输出路径 -->
    <property name="log.error.path" value="error" />
    <!-- 配置日志文件最大数量 -->
    <property name="log.file.max.num" value="30" />
    <!-- 配置日志文件大小最大值 -->
    <property name="log.file.max.size" value="50MB" />
    <!-- 配置总日志文件大小最大值 -->
    <property name="log.file.total.max.size" value="2GB" />

    <!-- 输出到控制台 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 配置debug级别日志 -->
    <appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 配置日志级别过滤器 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>debug</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <!-- 配置日志存放路径 -->
        <file>${log.split.path}${log.debug.path}/${log.path}</file>
        <!-- 配置日志切割器 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- 配置日志切割策略:每天切割 -->
            <fileNamePattern>${log.split.path}${log.debug.path}/log_debug_back.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- 配置日志数量 -->
            <maxHistory>${log.file.max.num}</maxHistory>
            <!-- 配置单个日志大小的最大值 -->
            <maxFileSize>${log.file.max.size}</maxFileSize>
            <!-- 配置总日志大小的最大值 -->
            <totalSizeCap>${log.file.total.max.size}</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 配置info级别日志 -->
    <appender name="info" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 配置日志级别过滤器 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>info</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <!-- 配置日志存放路径 -->
        <file>${log.split.path}${log.info.path}/${log.path}</file>
        <!-- 配置日志切割器 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- 配置日志切割策略:每天切割 -->
            <fileNamePattern>${log.split.path}${log.info.path}/log_info_back.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- 配置日志数量 -->
            <maxHistory>${log.file.max.num}</maxHistory>
            <!-- 配置单个日志大小的最大值 -->
            <maxFileSize>${log.file.max.size}</maxFileSize>
            <!-- 配置总日志大小的最大值 -->
            <totalSizeCap>${log.file.total.max.size}</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 配置warn级别日志 -->
    <appender name="warn" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 配置日志级别过滤器 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>warn</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <!-- 配置日志存放路径 -->
        <file>${log.split.path}${log.warn.path}/${log.path}</file>
        <!-- 配置日志切割器 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- 配置日志切割策略:每天切割 -->
            <fileNamePattern>${log.split.path}${log.warn.path}/log_warn_back.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- 配置日志数量 -->
            <maxHistory>${log.file.max.num}</maxHistory>
            <!-- 配置单个日志大小的最大值 -->
            <maxFileSize>${log.file.max.size}</maxFileSize>
            <!-- 配置总日志大小的最大值 -->
            <totalSizeCap>${log.file.total.max.size}</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 配置error级别日志 -->
    <appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 配置日志级别过滤器 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>error</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <!-- 配置日志存放路径 -->
        <file>${log.split.path}${log.error.path}/${log.path}</file>
        <!-- 配置日志切割器 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- 配置日志切割策略:每天切割 -->
            <fileNamePattern>${log.split.path}${log.error.path}/log_error_back.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- 配置日志数量 -->
            <maxHistory>${log.file.max.num}</maxHistory>
            <!-- 配置单个日志大小的最大值 -->
            <maxFileSize>${log.file.max.size}</maxFileSize>
            <!-- 配置总日志大小的最大值 -->
            <totalSizeCap>${log.file.total.max.size}</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>


    <!-- 日志级别:TRACE < DEBUG < INFO < WARN < ERROR < FATAL -->
    <root level="info">
        <!-- 控制台日志 -->
        <appender-ref ref="console" />
        <!-- 按级别输出到对应文件 -->
        <appender-ref ref="debug" />
        <appender-ref ref="info"/>
        <appender-ref ref="warn"/>
        <appender-ref ref="error" />
    </root>


</configuration>

上面就是我研究的日志配置了,关于XML每个标签的作用就不作解释了,想了解的可以很容易搜索到相关信息。

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值