是否可以确定将日志消息发送到logback中的追加者的实际记录器?例如:
<configuration>
<!-- ... -->
<logger name="com.example">
<appender-ref ref="myAppender"/>
</logger>
<logger name="com.example.sub">
<appender-ref ref="myAppender"/>
</logger>
</configuration>
现在,com.example
和com.example.sub
都会引用myAppender
。如果我登录com.example.sub.MyClass
,两个记录器都会在myAppender
上触发.doAppend()
。现在,是否可以获取实际发送消息的记录器的名称(保留对myAppender
的引用)?
示例性输出:
Logger com.example (com.example.sub.MyClass) Test
Logger com.example.sub (com.example.sub.MyClass) Test
我以编程方式配置日志框架。我想,我可以做点像
ContextSelectorStaticBinder binder = ContextSelectorStaticBinder.getSingleton();
ContextSelector selector = binder.getContextSelector();
selector.getLoggerContext(name).setName(name);
selector.getLoggerContext(name).getLogger(name).addAppender(appender);
然后在Encoder
:
@Override
public void doEncode(ILoggingEvent event) throws IOException {
String name = event.getLoggerContextVO().getName();
// ...
}
但是selector.getLoggerContext(name)
并没有返回不同的实例。背景:我有一个appender将日志消息发送到WebSocket。这个appender应该能够&#34;订阅&#34;到不同的记录器(基本上像在XML中)。该网页将在不同的标签中显示日志消息(&#34;渠道&#34;)。
答案 0 :(得分:0)
您可以知道哪个记录器/类记录了布局:http://logback.qos.ch/manual/layouts.html#conversionWord
您可以使用自定义模式过滤日志,以便在不同的标签中显示它们。