Java 从Logback中的Appender获取当前布局?
考虑以下用于回显的基本配置:Java 从Logback中的Appender获取当前布局?,java,logback,Java,Logback,考虑以下用于回显的基本配置: <configuration> <appender name="ControlAppender" class="org.quackbot.ControlAppender"> <pattern>%d{MM/dd/yyy hh:mm:ss a} %-5p %c - </pattern> </appender> </configuration> %d{MM/dd/
<configuration>
<appender name="ControlAppender" class="org.quackbot.ControlAppender">
<pattern>%d{MM/dd/yyy hh:mm:ss a} %-5p %c - </pattern>
</appender>
</configuration>
%d{MM/dd/yyy hh:MM:ss a}%-5p%c-
如何使用该布局并设置行的格式?一些不同的博客帖子和邮件列表说AppenderBase曾经有一个getLayout()和setLayout()方法,但它们已经被删除了
在我的代码中重新实现布局的getter和setter不起作用,它只返回nullevent.getFormattedMessage()
返回原始行,而不是格式化行。我似乎找不到任何其他方法可以根据布局格式化消息
有没有办法根据配置中指定的模式格式化消息 Logback配置只是将您指定的元素拼凑在一起。它本身不构成组件。在上面的配置文件中,您没有指定布局元素,因此它不会被注入到ControlAppender中 因为我不知道ControlAppender是做什么的,所以我无法提出最合适的解决方案。但是,您至少有两种选择: 1) 让ControlAppender接受布局作为参数。您的配置文件看起来类似于:
<configuration>
<appender name="ControlAppender" class="org.quackbot.ControlAppender">
<layout class="class="ch.qos.logback.classic.PatternLayout"">
<pattern>%d{MM/dd/yyy hh:mm:ss a} %-5p %c - </pattern>
</layout>
</appender>
</configuration>
<configuration>
<appender name="ControlAppender" class="org.quackbot.ControlAppender">
<pattern>%d{MM/dd/yyy hh:mm:ss a} %-5p %c - </pattern>
</appender>
</configuration>
如果需要进一步帮助,请在logback用户列表中大声呼叫
PatternLayout pl = new PatternLayout();
pl.setPattern(pattern);
pl.setContext(context);
pl.start();