spring Boot (六) logback日志框架整合

上述篇章基本的调用已经完工了,试想万一出错,该从何找问题呢?关键日志记录也是时候浮出水面了。本篇主要讲述SpringBoot整合logback日志框架。
其实两者结合很简单,只需要配置一下logback.xml文件则可以完成主要问题。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!--%m输出的信息,%p日志级别,%t线程名,%d日期,%c类的全名,%i索引【从数字0开始递增】,,,-->
    <property name="log.default_pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS}|%-5level|%X{traceId}|%logger{1}|%msg%n"/>
    <property name="log.default_max_history" value="14"/>
    <property name="log.default_charset" value="UTF-8"/>
    <property name="log.home" value="logs"/>

    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <!--输出日志格式-->
            <pattern>${log.default_pattern}</pattern>
            <charset>${log.default_charset}</charset>
        </encoder>
    </appender>

    <!--RollingFileAppender:滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件-->
    <appender name="info" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.home}/info.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.home}/archives/info.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>${log.default_max_history}</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.default_pattern}</pattern>
            <charset>${log.default_charset}</charset>
        </encoder>
    </appender>

    <appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>WARN</level>
        </filter>
        <file>${log.home}/error.log</file>
        <!--rollingPolicy:当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名-->
        <!--TimeBasedRollingPolicy: 最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动-->
        <rollingPolicy  class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--活动文件的名字会根据fileNamePattern的值,每隔一段时间改变一次-->
            <fileNamePattern>${log.home}/archives/error.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!--每产生一个日志文件,该日志文件的最大保存期限-->
            <maxHistory>${log.default_max_history}</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.default_pattern}</pattern>
            <charset>${log.default_charset}</charset>
        </encoder>
    </appender>

    <!-- 数据库日志 -->
    <appender name="db_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.home}/db_info.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.home}/archives/db_info.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>${log.default_max_history}</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.default_pattern}</pattern>
            <charset>${log.default_charset}</charset>
        </encoder>
    </appender>

    <!-- 请求日志 -->
    <appender name="request" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.home}/request.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.home}/archives/request.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>${log.default_max_history}</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.default_pattern}</pattern>
            <charset>${log.default_charset}</charset>
        </encoder>
    </appender>

    <!--控制台输出日志级别-->
    <root level="INFO">
        <appender-ref ref="console"/>
        <appender-ref ref="info"/>
        <appender-ref ref="error"/>
    </root>
    <!--指定项目中某个包,当有日志操作行为时的日志记录级别-->
    <!--级别依次为【从高到低】:FATAL > ERROR > WARN > INFO > DEBUG > TRACE-->
    <logger name="request" level="INFO" additivity="false">
        <appender-ref ref="request"/>
    </logger>
    <logger name="db_info" level="INFO" additivity="false">
        <appender-ref ref="db_info" />
        <appender-ref ref="console" />
    </logger>

</configuration>

项目我主要记录了console,info,error,db_info,request等相关日志需求,平时主要的应用还是info,error,request偏多一点。
logback.xml配置文件搭建完工,我主要就是在com.exam.api.service中对info和error进行了一下简单测试。

public boolean saveExamBase(String examName, int subjectId) {
        Exam exam = new Exam();
        exam.setExamName(examName);
        exam.setSubjectId(subjectId);
        logger.info("saveExamBase examName {}", examName);
        //beetlsql保存,手动sql保存信息功能
        //examBaseDao.saveExamBaseInfo(examName,subjectId);
        try {
        //调用beetlSQL API接口 insert功能
            examBaseDao.insert(exam);
        } catch (Exception e) {
            logger.error("saveExam is error", e);
        }
        return true;
    }
logger.info("saveExamBase examName {}", examName);
logger.error("saveExam is error", e);

以上是我写的两个日志,我们执行项目,看结果
logback
看红色标记部分,则是我打出的info日志和error日志。蓝色部分主要是因为本篇博客我是在家写的,测试数据使用的公司局域网,把VPN断掉,druid数据源进行重试连接而打印出的。具体的其他日志,等回头项目整个完工,在服务器上打印,看结果。

posted on 2018-05-26 11:09  huohuoL  阅读(270)  评论(0编辑  收藏  举报

导航