繁体   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