我有一个“特殊”的日志记录要求 - 我需要每个记录器都在不同的文件中。
Java
然后我希望logback可以将来自
其他日志框架能否用于解决这个用例?
我可以手动配置
编辑:
我实现了自定义鉴别器:
Java
Logger log1 = LoggerFactory.getLogger("dynamic.log1");
Logger log2 = LoggerFactory.getLogger("dynamic.log2");
//...
然后我希望logback可以将来自
log1
的任何输出都写入文件log1.log
,以此类推。是否可以使用logback“动态”创建新的appender
?其他日志框架能否用于解决这个用例?
我可以手动配置
appenders
,但这正是我想避免的。例如,每当我添加一个dynamic
记录器时,就会相应地创建新的appender/文件。编辑:
我实现了自定义鉴别器:
public class LoggerBasedDiscriminator extends AbstractDiscriminator<ILoggingEvent> {
private static final String LOGGER_NAME = "loggerName";
@Override
public String getDiscriminatingValue(ILoggingEvent e) {
return e.getLoggerName();
}
@Override
public String getKey() {
return LOGGER_NAME;
}
}
然后我的appender配置看起来像这样:
<appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">
<discriminator class="cz.svobol.logging.LoggerBasedDiscriminator">
<key>loggerName</key>
<defaultValue>root</defaultValue>
</discriminator>
<sift>
<appender name="FILE-${loggerName}" class="ch.qos.logback.core.FileAppender">
<file>${loggerName}.log</file>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
</sift>
</appender>