spingbootspringboot

Springboot日志框架

2020-04-21  本文已影响0人  landscape_f117

概要

官方文档:https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-logging

springboot默认选用的框架是 slf4j+logback。

使用

Springboot默认配置好了日志框架,直接使用即可。

配置

Springboot的jar包中包含了默认的日志格式配置:

C:\Users\Administrator.m2\repository\org\springframework\boot\spring-boot\2.2.2.RELEASE\spring-boot-2.2.2.RELEASE.jar!\org\springframework\boot\logging\logback\defaults.xml

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

<!--
Default logback configuration provided for import
-->

<included>
    <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}}"/>
    <property name="FILE_LOG_PATTERN" value="${FILE_LOG_PATTERN:-%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>

    <logger name="org.apache.catalina.startup.DigesterFactory" level="ERROR"/>
    <logger name="org.apache.catalina.util.LifecycleBase" level="ERROR"/>
    <logger name="org.apache.coyote.http11.Http11NioProtocol" level="WARN"/>
    <logger name="org.apache.sshd.common.util.SecurityUtils" level="WARN"/>
    <logger name="org.apache.tomcat.util.net.NioSelectorPool" level="WARN"/>
    <logger name="org.eclipse.jetty.util.component.AbstractLifeCycle" level="ERROR"/>
    <logger name="org.hibernate.validator.internal.util.Version" level="WARN"/>
</included>

如果想要自定义日志文件配置:

如果类路径下有如下文件,springboot将会自动加载覆盖默认配置:

logback-spring.xml

logback.xml

logback-spring.groovy

logback.groovy

spring推荐使用-spring的写法。这样可以使用springboot提供的profile功能。(不加的话会被日志框架识别从而绕过springboot,这样就不能使用这个功能。)

<springProfile name="staging">
    <!-- configuration to be enabled when the "staging" profile is active -->
</springProfile>

<springProfile name="dev | staging">
    <!-- configuration to be enabled when the "dev" or "staging" profiles are active -->
</springProfile>

<springProfile name="!production">
    <!-- configuration to be enabled when the "production" profile is not active -->
</springProfile>

示例

配置文件

D:\springbootdemo\src\main\resources\logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration  debug="false" scan="true" scanPeriod="60 seconds">

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

    <!--输出到文件-->
      <!-- RollingFileAppender:滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 -->
    <!-- 以下的大概意思是:1.先按日期存日志,日期变了,将前一天的日志文件名重命名为XXX%日期%索引,新的日志仍然是sys.log -->
    <!--             2.如果日期没有发生变化,但是当前日志的文件大小超过1KB时,对当前日志进行分割 重命名-->    
    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <springProfile name="!dev">
                <fileNamePattern>/home/work/log/granary/granary_%d{yyyy_MM_dd}.log</fileNamePattern>
            </springProfile>
            <springProfile name="dev">
                <fileNamePattern>./log/granary/granary_%d{yyyy_MM_dd}.log</fileNamePattern>
            </springProfile>
            <!--<maxHistory>7</maxHistory>-->
            <totalSizeCap>1GB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
            <charset>utf-8</charset>
        </encoder>
        <append>true</append>
    </appender>

    <root level="INFO">
        <appender-ref ref="console" />
        <appender-ref ref="file" />
    </root>


<!--    <appender name="LCS_SELF_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
<!--        <file>/home/work/log/granary/thrift_appender.log</file>-->
<!--        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">-->
<!--            &lt;!&ndash; rollover daily &ndash;&gt;-->
<!--            <fileNamePattern>/home/work/log/granary/thrift_appender.%d{yyyy-MM-dd}.log.%i</fileNamePattern>-->
<!--            &lt;!&ndash; each file should be at most 100MB, keep 10 days worth of history, but at most 1GB &ndash;&gt;-->
<!--            <maxFileSize>100MB</maxFileSize>-->
<!--            <maxHistory>10</maxHistory>-->
<!--            <totalSizeCap>1GB</totalSizeCap>-->
<!--        </rollingPolicy>-->
<!--        <encoder>-->
<!--            <pattern>%d{yyyy-MM-dd HH:mm:ss:SSS} {%t} [%p] %c: %m%n</pattern>-->
<!--        </encoder>-->
<!--    </appender>-->

<!--    <appender name="LCS_THRIFT" class="com.xiaomi.infra.galaxy.lcs.log.logback.appender.LCSThriftAppender">-->
<!--        <blockWhenBufferFull>false</blockWhenBufferFull>-->
<!--    </appender>-->

<!--    <logger name="com.xiaomi.infra.galaxy.lcs.log.logback.appender.LCSThriftAppender" additivity="false">-->
<!--        <level value="INFO" />-->
<!--        <appender-ref ref="LCS_SELF_APPENDER" />-->
<!--    </logger>-->

<!--    <logger name="com.xiaomi.infra.galaxy.lcs.log.logback.LCSLogger" additivity="false" >-->
<!--        <level value="INFO"/>-->
<!--        <appender-ref ref="LCS_THRIFT"/>-->
<!--    </logger>-->


</configuration>

测试

D:\springbootdemo\src\test\java\cn\greenleaf\ApplicationTest.java

/**
 * @Auther: Leon Liu
 * @Date: 2020/04/04/18:01
 * @Description:
 **/

@SpringBootTest
@RunWith(SpringRunner.class)
public class ApplicationTest {
    Logger logger = LoggerFactory.getLogger(getClass());

    @Test
    public void testLog(){

//        日志级别
        logger.trace("tracesss");
        logger.debug("debuggggg");
        logger.info("infofff");//默认
        logger.warn("warnnnnnn");
        logger.error("errorrrr");
    }



}
上一篇 下一篇

猜你喜欢

热点阅读