我对登录有“特殊”要求-我需要每个记录器都在单独的文件中。
爪哇
Logger log1 = LoggerFactory.getLogger("dynamic.log1");
Logger log2 = LoggerFactory.getLogger("dynamic.log2");
//...
然后,我想将任何输出从Logbacklog1
写入文件log1.log
,依此类推。是否可以“动态”地appender
使用logback创建new ?
可以使用其他一些日志记录框架来解决此用例吗?
我可以手动配置appender,但这是我要避免的事情。就像我添加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 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>
您可以使用SiftingAppender。
这样,您就有一个附加程序,可以将日志动态地划分为不同的文件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句