以前在log4j 1.x中我能够appender.setLayout()和Appender,但现在在log4j 2.x中没有setLayout()这样的方法。如何在log4j2中以编程方式将布局设置为Appender对象?
答案 0 :(得分:2)
没有setLayout()方法。您将需要获取当前配置并在运行时更新它,如documentation。
中所述答案 1 :(得分:0)
您可以通过这种方式添加自己的布局(例如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
答案 2 :(得分:0)
如果偶然地,您只是想更改用于各种日志事件的模式,则可以使用模式选择器。否则,更好地了解用例可能会提供其他选择。实际上,我很想知道您为什么要以编程方式更改布局,因为很少有人要求这样做。