springboot logback.xml配置
***********************************
logback.xml配置说明
****************************
根节点configuration
属性:
scan:当配置文件修改时是否重新加载,默认为true;
scanPeriod:扫描间隔时间,如"60 seconds",不带单位时,默认为毫秒;
debug:是否输出logback的内部日志,默认为false
****************************
子节点
<property name=" " value=" "/>:设置属性值
<contextName>name</contextName>:设置上下文的名称
<timestamp key="" datePattern=""/>:设置时间戳的格式
****************************
子节点appender:设置日志输出目的地,可为控制台、文件、数据库等
属性:
name:appender的名称
class:appender使用的输出类
子节点
<append>true</append>:是否在文件后面追加,默认为true
<encoder>。。。</encoder>:输出格式
<prudent>false</prudent>:为true时,多个appender向同一个文件输出时可保证安全,但效率较低,默认为false
常用输出类:
******************************
ConsoleAppender:输出到控制台
public class ConsoleAppender<E> extends OutputStreamAppender<E> {
protected ConsoleTarget target; //systemout、systemerr,默认为systemout
protected boolean withJansi;
******************************
FileAppender:输出到文件,文件不可滚动
public class FileAppender<E> extends OutputStreamAppender<E> {
protected boolean append = true;
protected String fileName = null;
private boolean prudent = false;
private FileSize bufferSize = new FileSize(8192L);
******************************
RollingFileAppender:输出到滚动文件,文件输出常用这个类
public class RollingFileAppender<E> extends FileAppender<E> {
File currentlyActiveFile;
TriggeringPolicy<E> triggeringPolicy;
RollingPolicy rollingPolicy;
************************************************
滚动策略
**********************
TimeBasedRollingPolicy:时间滚动策略,常用此滚动策略
public class TimeBasedRollingPolicy<E> extends RollingPolicyBase implements TriggeringPolicy<E> {
private int maxHistory = 0;
protected FileSize totalSizeCap = new FileSize(0L);
TimeBasedFileNamingAndTriggeringPolicy<E> timeBasedFileNamingAndTriggeringPolicy;
boolean cleanHistoryOnStart = false;
**********************
SizeAndTimeBasedRollingPolicy:文件大小、时间滚动策略
public class SizeAndTimeBasedRollingPolicy<E> extends TimeBasedRollingPolicy<E> {
FileSize maxFileSize;
**********************
FixedWindowRollingPolicy:固定窗口滚动策略
public class FixedWindowRollingPolicy extends RollingPolicyBase {
int maxIndex = 7;
int minIndex = 1;
public static final String ZIP_ENTRY_DATE_PATTERN = "yyyy-MM-dd_HHmm";
private static int MAX_WINDOW_SIZE = 20;
**************************************
触发滚动策略
SizeBasedTriggeringPolicy:文件大小触发滚动策略
public class SizeBasedTriggeringPolicy<E> extends TriggeringPolicyBase<E> {
FileSize maxFileSize = new FileSize(10485760L);
文件滚动策略使用TimeBasedRollingPolicy或者FixedWindowRollingPolicy+SizeBasedTriggeringPolicy
文件类使用FileAppender
文件输出类使用RollingFileAppender
滚动策略TimeBasedRollingPolicy
滚动策略SizeAndTimeBasedRollingPolicy
使用size限制文件大小,文件命名时需带%i
滚动策略FixedWindowRollingPolicy+触发滚动策略SizedBasedTriggeringPolicy
使用size限制文件大小时,文件命名需带%i
*************************
子节点logger
属性:
name:指定包名、或者类的全限定名
level:日志输出级别,如果不设置,默认与root的日志级别相同
additivity:是否输出到root节点,默认为true
子节点:
<appender-ref ref=" "/>:ref引用的内容为appender的name
*************************
子节点root
root为特殊的logger,只用一个属性level
子节点:
<append-ref ref=" "/>:ref引用的内容为appender的name
*******************************************
logback.xml配置示例
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<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="log.path" value="e:/hhhh/"/>
<property name="console.pattern" value="%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.pattern" value="%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}"/>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${console.pattern}</pattern>
</encoder>
</appender>
<appender name="file" class="ch.qos.logback.core.FileAppender">
<file>${log.path}/my.log</file>
<encoder>
<pattern>${file.pattern}</pattern>
</encoder>
</appender>
<appender name="file2" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.path}/mylog.%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>info</level>
<onMatch>accept</onMatch>
<onMismatch>deny</onMismatch>
</filter>
<encoder>
<pattern>${file.pattern}</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="console"/>
<appender-ref ref="file"/>
<appender-ref ref="file2"/>
</root>
</configuration>