Logback - SiftingAppender 日志打印


之前做项目需要按照相关不同的业务打印到不同的文件目录中去。在logback-spring.xml中增加了相关配置

SiftingAppender 能根据一定的规则鉴别日志事件,然后委托给不同的appender完成真正的日志输出任务。



<appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">
    
        <appender name="LOG-FILE-${loggerName}" class="ch.qos.logback.core.rolling.RollingFileAppender">
            
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%npattern>
                <charset>UTF-8charset>
            encoder>
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                
                <FileNamePattern>${LOG_HOME}/%d{yyyyMMdd}/${LOG_NAME}-%i.logFileNamePattern>
                
                <maxFileSize>100MBmaxFileSize>
                
                <MaxHistory>30MaxHistory>
            rollingPolicy>
        appender>
    sift>
appender>
关于 Discriminator :不指定具体class时,默认使用MDCBasedDiscriminator  
public class LogBasedDiscriminator implements Discriminator {


    private boolean started;
    private static final String KEY = "LOG_NAME";
    private String defaultValue = "test";

    @Override
    public String getDiscriminatingValue(ILoggingEvent iLoggingEvent) {
        //相关业务逻辑返回值return defaultValue;
    }

    @Override
    public String getKey() {
        return KEY;
    }

    @Override
    public void start() {
        started = true;
    }

    @Override
    public void stop() {
        started = false;
    }

    @Override
    public boolean isStarted() {
        return started;
    }

}


参考:https://www.jianshu.com/p/a33902d58530