gpt4 book ai didi

java - 如何在 logback.xml 中设置 SiftingAppender 时使用记录器

转载 作者:行者123 更新时间:2023-11-30 05:33:38 26 4
gpt4 key购买 nike

我有这个 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 不起作用,而且我还有其他附加器一起工作,那么如何处理它?<​​/p>

最佳答案

使用相同的设置,只需使用如下所示的记录器即可完美运行;

@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 中添加以下内容;

<logger name="mylogger" level="error">
<appender-ref ref="SIFT"/>
</logger>

因为appender != logger,您可以将自己的配置添加到此...

然后你就可以了;

LoggerFactory.getLogger("mylogger");

将导致日志有所不同;

14:53:23.447 [myThread]   ERROR mylogger - hey

关于java - 如何在 logback.xml 中设置 SiftingAppender 时使用记录器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57039971/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com