[英]Get the current layout from an Appender in Logback?
考慮以下基本配置用於登錄:
<configuration>
<appender name="ControlAppender" class="org.quackbot.ControlAppender">
<pattern>%d{MM/dd/yyy hh:mm:ss a} %-5p %c - </pattern>
</appender>
</configuration>
如何使用該布局並設置行格式? 一些不同的博客文章和郵件列表說,AppenderBase曾經有一個getLayout()和setLayout()方法,但是它們已經被刪除了。
在我的代碼中重新實現布局的getter和setter無效,它僅返回null。 event.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>
登錄將把PatternLayout實例注入ControlAppender。 然后,您可以使用PatternLayout實例根據您選擇的模式來格式化事件。
2)如果您始終要使用PatternLayout,則可以直接從模式中創建它。 您的配置文件看起來類似於:
<configuration>
<appender name="ControlAppender" class="org.quackbot.ControlAppender">
<pattern>%d{MM/dd/yyy hh:mm:ss a} %-5p %c - </pattern>
</appender>
</configuration>
您可能需要ControlAppender中的setter方法(即setPattern)才能將模式注入ControlAppender中。 一旦有了模式,就可以自己創建一個PatternLayout。 例如,通過調用:
PatternLayout pl = new PatternLayout();
pl.setPattern(pattern);
pl.setContext(context);
pl.start();
如果需要進一步的幫助,請在登錄用戶列表上大喊大叫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.