Logback SiftingAppender使用指导
摘要:在 (ECP)工程中使用Logback的SiftingAppender可以帮助实现日志的分流和分离,使每个线程日志可以被独立记录和管理。下面是一些使用SiftingAppender的指导:
一、配置SiftingAppender
配置SiftingAppender:在Logback的配置文件中,添加SiftingAppender的配置,指定它作为根Logger的一个Appender。
<!-- 自定义筛选器类--> <appender name="MY_SIFTING" class="ch.qos.logback.classic.sift.SiftingAppender"> <discriminator class="cn.histo.common.config.LoggerNameBasedDiscriminator"> <defaultValue>my_general</defaultValue> </discriminator> <sift> <appender name="FILE-${loggerName}" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>target/log/${loggerName}.%d{yyyyMMddHHmm}-%i.log</fileNamePattern> <maxHistory>60</maxHistory> <maxFileSize>300KB</maxFileSize> </rollingPolicy> <encoder> <pattern>%msg%n</pattern> </encoder> </appender> </sift> </appender> <root level="INFO"> <appender-ref ref="MY_SIFTING"/> </root>
二、配置 discriminator
在<sift>元素中,我们配置了一个名为"FILE"的FileAppender,用于将日志写入到对应用户的日志文件中。${loggerName}是日志名称标识的占位符,每个日志记录器的名称将被记录到以其标识命名的日志文件中。以下是详细的 discriminator
package cn.histo.common.config; import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.core.sift.AbstractDiscriminator; public class LoggerNameBasedDiscriminator extends AbstractDiscriminator<ILoggingEvent> { private static final String KEY = "loggerName"; private String defaultValue; public String getDefaultValue() { return defaultValue; } public void setDefaultValue(String defaultValue) { this.defaultValue = defaultValue; } @Override public String getKey() { return KEY; } public void setKey() { throw new UnsupportedOperationException("Key not settable. Using " + KEY); } @Override public String getDiscriminatingValue(ILoggingEvent e) { String loggerName = e.getLoggerName(); if (loggerName == null) { return defaultValue; } return loggerName; } }
结果展示
以上是使用SiftingAppender 根据 日志记录器的名称实现多文件记录日志, 实现日志分流和分离的一个示例。请根据具体场景和需求自定义配置SiftingAppender

浙公网安备 33010602011771号