[英]how to use logger while setting SiftingAppender in logback.xml
我有这个logback配置:
<appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">
<discriminator class="com.blackHole.programmingTrading.config.ThreadNameBasedDiscriminator"/>
<sift>
<appender name="FILE-${threadName}" class="ch.qos.logback.core.FileAppender">
<file>${LOG_HOME}/app-${threadName}.log</file>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>${UNION_LOG_PATTERN}</pattern>
</layout>
</appender>
</sift>
</appender>
并有这个配置类:
public class ThreadNameBasedDiscriminator implements Discriminator<ILoggingEvent> {
private static final String KEY = "threadName";
private boolean started;
@Override
public String getDiscriminatingValue(ILoggingEvent iLoggingEvent) {
return iLoggingEvent.getThreadName();
}
@Override
public String getKey() {
return KEY;
}
public void start() {
started = true;
}
public void stop() {
started = false;
}
public boolean isStarted() {
return started;
}
}
但是当我得到这样的记录器时:
LoggerFactory.getLogger(Logger.class)
或这个:
LoggerFactory.getLogger("SIFT")
siftAppender
不起作用,我还有其他附加程序一起工作,那么如何处理呢?
使用相同的设置,只需使用如下所示的记录器即可完美运行;
@Component
public class SomeService {
public void test() {
Logger logger = LoggerFactory.getLogger(SomeService.class);
logger.error("hey");
}
}
然后就可以在我本地看到app-myThread.log
中的日志了;
14:43:01.808 [myThread] ERROR com.example.demo.SomeService - hey
如果您想获得一个带有其名称的记录器,则需要在logback.xml
添加以下logback.xml
;
<logger name="mylogger" level="error">
<appender-ref ref="SIFT"/>
</logger>
因为appender != logger
,您可以将自己的配置添加到此...
然后你就可以了;
LoggerFactory.getLogger("mylogger");
会导致日志有点不同;
14:53:23.447 [myThread] ERROR mylogger - hey
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.