簡體   English   中英

如何在 log4j2 中以編程方式更改 Appender 布局?

[英]How to change Appender layout programmatically in log4j2?

以前在 log4j 1.x 中我可以在 Appender 上添加 appender.setLayout() 但現在在 log4j 2.x 中沒有 setLayout() 這樣的方法。 如何在 log4j2 中以編程方式將布局設置為 Appender 對象?

沒有 setLayout() 方法。 您將需要獲取當前配置並在運行時更新它,如 文檔中所述。

您可以通過這種方式添加您自己的布局(以 ConsoleAppender 為例):

// rootLoggerConfig you can get from LoggerContext.getRootLogger().get()

String pattern = "%d [%p|%c|%C{1}] %m%n"; // your pattern here

PatternLayout pl = PatternLayout.newBuilder().withPattern(pattern).build();
ConsoleAppender consoleAppender = ConsoleAppender.createDefaultAppenderForLayout(pl);

rootLoggerConfig.addAppender(consoleAppender, Level.getLevel("INFO"), filter);

// filter - your implementation of 
// org.apache.logging.log4j.core.filter.AbstractFilter

如果偶然地,您只想更改用於不同類型日志事件的模式,您可以使用模式選擇器。 否則,更好地了解您的用例可能會提供其他替代方案。 事實上,我很想知道您為什么要以編程方式更改布局,因為要求這樣做是不尋常的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM