springboot 使用logback记录日志

      默认情况下,Spring Boot会用Logback来记录日志,并用INFO级别输出到控制台。也就是说你不需要配置什么就可以打印日志了。但是呢,如果想自定义输出的日志或保存到指定文件,那就需要自己写配置文件了,我这边就直接上代码咯。

logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>

<!-- 级别从高到低 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 TRACE 、 ALL -->
<!-- 日志输出规则 根据当前ROOT 级别,日志输出时,级别高于root默认的级别时 会输出 -->
<!-- 以下 每个配置的 filter 是过滤掉输出文件里面,会出现高级别文件,依然出现低级别的日志信息,通过filter 过滤只记录本级别的日志 -->
<!-- scan 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。 -->
<!-- scanPeriod 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<!-- logback的配置,输出日志是从子节点开始,子节点如果有输出源直接输入,如果无,判断配置的addtivity,是否像上级传递,即是否向root传递,传递则采用root的输出源,否则不输出日志。 -->
<configuration scan="true" scanPeriod="60" debug="false">
    <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 ,%msg:日志消息,%n是换行符 -->
    <property name="PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n />

    <property name="LOG_HOME" value="logs"/>

    <property name="TEST_FILE_PATH" value="d:/logs/test.log"/>

    <property name="PRO_FILE_PATH" value="d:/logs/pro.log" />

    <!--控制台输出-->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>${PATTERN}</pattern>
        </encoder>
    </appender>

    <!-- 按照每天生成日志文件 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${LOG_HOME}/log.log.%d{yyyy-MM-dd}.log</FileNamePattern>
            <!-- 保存最近10个月的文件,删除之前的旧文件 -->
            <MaxHistory>10</MaxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${PATTERN}</pattern>
        </encoder>
        <!-- 日志文件最大的大小 -->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
    </appender>

     <!-- 分级别生成日志文件 -->
    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">  
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
            <FileNamePattern>${LOG_HOME}/info.%d{yyyy-MM-dd}.log</FileNamePattern>
            <MaxHistory>10</MaxHistory>  
        </rollingPolicy>  
        <layout>  
            <pattern>${PATTERN}</pattern>  
        </layout> 
        <filter class="ch.qos.logback.classic.filter.LevelFilter"> 
           <level>INFO</level>  
           <onMatch>ACCEPT</onMatch>  
           <onMismatch>DENY</onMismatch>  
        </filter>   
    </appender> 

    <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">  
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
            <FileNamePattern>${LOG_HOME}/warn.%d{yyyy-MM-dd}.log</FileNamePattern>  
            <MaxHistory>10</MaxHistory>
        </rollingPolicy>  
        <layout>  
            <pattern>${PATTERN}</pattern>  
        </layout> 
        <filter class="ch.qos.logback.classic.filter.LevelFilter"> 
           <level>WARN</level>  
           <onMatch>ACCEPT</onMatch>  
           <onMismatch>DENY</onMismatch>  
        </filter>   
    </appender>  

    <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">  
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
            <FileNamePattern>${LOG_HOME}/debug.%d{yyyy-MM-dd}.log</FileNamePattern> 
            <MaxHistory>10</MaxHistory> 
        </rollingPolicy>  
        <layout>  
            <pattern>${PATTERN}</pattern>  
        </layout> 
        <filter class="ch.qos.logback.classic.filter.LevelFilter"> 
           <level>DEBUG</level>  
           <onMatch>ACCEPT</onMatch>  
           <onMismatch>DENY</onMismatch>  
        </filter>   
    </appender> 

    <appender name="TRACE_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">  
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
            <FileNamePattern>${LOG_HOME}/trace.%d{yyyy-MM-dd}.log</FileNamePattern>  
            <MaxHistory>10</MaxHistory>
        </rollingPolicy>  
        <layout>  
            <pattern>${PATTERN}</pattern>  
        </layout> 
        <filter class="ch.qos.logback.classic.filter.LevelFilter"> 
           <level>TRACE</level>  
           <onMatch>ACCEPT</onMatch>  
           <onMismatch>DENY</onMismatch>  
        </filter>   
    </appender>

    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">  
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
            <FileNamePattern>${LOG_HOME}/error.%d{yyyy-MM-dd}.log</FileNamePattern>  
            <MaxHistory>10</MaxHistory>
        </rollingPolicy>  
        <layout>  
            <pattern>${PATTERN}</pattern>  
        </layout> 
        <filter class="ch.qos.logback.classic.filter.LevelFilter"> 
           <level>ERROR</level>  
           <onMatch>ACCEPT</onMatch>  
           <onMismatch>DENY</onMismatch>  
        </filter>   
    </appender> 

    <!-- 在控制台打印SQL -->
    <!--logger用来设置某一个包或具体的某一个类的日志打印级别-->
    <!-- show parameters for hibernate sql 专为 Hibernate 定制 -->
    <logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE" addtivity="false" />
    <logger name="org.hibernate.type.descriptor.sql.BasicExtractor" level="DEBUG" />
    <logger name="org.hibernate.SQL" level="DEBUG" />
    <logger name="org.hibernate.engine.QueryParameters" level="DEBUG" />
    <logger name="org.hibernate.engine.query.HQLQueryPlan" level="DEBUG" />

    <!--mybatis log configure-->
    <logger name="com.ibatis" level="DEBUG" />  
    <logger name="com.ibatis.common.jdbc.SimpleDataSource" level="DEBUG" />  
    <logger name="com.ibatis.common.jdbc.ScriptRunner" level="DEBUG" />  
    <logger name="com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate" level="DEBUG" />  
    <logger name="java.sql.Connection" level="DEBUG" />  
    <logger name="java.sql.Statement" level="DEBUG" />  
    <logger name="java.sql.PreparedStatement" level="DEBUG" />  

    <!-- 日志输出级别 -->
    <root level="INFO">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="DEBUG_FILE" />
        <appender-ref ref="INFO_FILE" />
        <appender-ref ref="WARN_FILE" />
        <appender-ref ref="TRACE_FILE" />
        <appender-ref ref="ERROR_FILE" />
    </root>

    <!--多环境输出日志-->
    <!--开发环境-->
    <springProfile name="dev">
        <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${PATTERN}</pattern>
        </encoder>
        </appender>
        <root level="info">
            <appender-ref ref="CONSOLE" />
        </root>
    </springProfile>

   <!--测试环境-->
    <springProfile name="test">

        <appender name="TEST-FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">

            <file>${TEST_FILE_PATH}</file>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

                <fileNamePattern>${TEST_FILE_PATH}/info.%d{yyyy-MM-dd}.log</fileNamePattern>

                <MaxHistory>10</MaxHistory>
                <totalSizeCap>1GB</totalSizeCap>
            </rollingPolicy>
            <layout class="ch.qos.logback.classic.PatternLayout">
                <pattern>${PATTERN}</pattern>
            </layout>
        </appender>
        <root level="info">
            <appender-ref ref="FILE" />
        </root>
    </springProfile>

    <!--生产环境-->
    <springProfile name="prod">
        <appender name="PROD_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${PRO_FILE_PATH}</file>
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
                <fileNamePattern>${PRO_FILE_PATH}/warn.%d{yyyy-MM-dd}.log</fileNamePattern>
                <maxFileSize>10MB</<maxFileSize>
            </rollingPolicy>

            <layout class="ch.qos.logback.classic.PatternLayout">
                <pattern>${PATTERN}</pattern>
            </layout>
        </appender>
        <root level="warn">
            <appender-ref ref="FILE" />
        </root>
    </springProfile>


</configuration>

       【补充一点:多环境配置需要在application.propetise中激活】

这里写图片描述

#激活 application-dev.properties 文件配置
spring.profiles.active = dev

猜你喜欢

转载自blog.csdn.net/try_try_try/article/details/80223645