之前做项目需要按照相关不同的业务打印到不同的文件目录中去。在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