Java Logback的自定义上下文选择器有什么意义?

Java Logback的自定义上下文选择器有什么意义?,java,logback,Java,Logback,所以我有正确的实现,调用它很好,但是没有方法LoggerFactorygetContextString name..那么如果我不能传递任何决策依据,它怎么能做出任何决策呢 有一个ContextSelectorgetLoggerContextString名称,但我无权访问它 所以我的观点是:当我无法将内容传递到选择器或无法访问选择器时,如何进行任何类型的选择 我需要加载具有不同配置的多个上下文,在运行时根据自己的逻辑从中进行选择 我已经找到了一个简单地创建LoggerContext并对其进行配置的

所以我有正确的实现,调用它很好,但是没有方法LoggerFactorygetContextString name..那么如果我不能传递任何决策依据,它怎么能做出任何决策呢

有一个ContextSelectorgetLoggerContextString名称,但我无权访问它

所以我的观点是:当我无法将内容传递到选择器或无法访问选择器时,如何进行任何类型的选择

我需要加载具有不同配置的多个上下文,在运行时根据自己的逻辑从中进行选择

我已经找到了一个简单地创建LoggerContext并对其进行配置的解决方案,但我不理解这种替代机制的意义。

ContextSelector是一个Logback构造,而不是Slf4j API的一部分。因此,在LoggerFactory上找不到任何上下文相关的方法

但是没有方法LoggerFactorygetContextString name..所以,如果我不能传递任何决策依据,它怎么能做出任何决策呢

上下文是根据一些线程本地信息确定的。看看哪一个基于JNDI确定了正确的上下文。现在,当在作为webapp一部分的servlet中调用LoggerFactory.getLogger并启用JNDI ContextSelector时,Logback将确定线程的JNDI上下文,并根据该LoggerContext名称确定。除了一些线程本地外,我看不到LoggerFactory可以确定上下文的方法

我已经找到了一个简单地创建LoggerContext并对其进行配置的解决方案,但当时我不理解这种替代机制的意义


如果您的上下文选择逻辑可以在应用程序的入门级工作,例如webapp中的servlet筛选器,那么您可以拥有一个自定义上下文选择器,该选择器从ThreadLocal中查看,并在ThreadLocal中设置正确的上下文(如果您中的一位具有使用记录器上下文和上下文选择器的实际经验)

独立于JNDI,也许你可以给我一些关于at的见解。谢谢