Springboot日志框架
2020-04-21 本文已影响0人
landscape_f117
概要
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">-->
<!-- <!– rollover daily –>-->
<!-- <fileNamePattern>/home/work/log/granary/thrift_appender.%d{yyyy-MM-dd}.log.%i</fileNamePattern>-->
<!-- <!– each file should be at most 100MB, keep 10 days worth of history, but at most 1GB –>-->
<!-- <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");
}
}