我需要以编程方式将具有模式布局的控制台附加程序添加到 Root Logger。我以前使用 log4j1.x 的代码有类似 Logger.getLogger(new Appender(console,fname,patternlayout,"Specific pattern") How to convert this one to log4j 2.3.2
问问题
23 次
1 回答
0
Log4j 2.3.2 是一个旧版本,缺少许多新功能,例如ConfigurationBuilder
API。
但是,您可以构建控制台附加程序并通过以下方式直接附加到根记录器:
final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
final Logger logger = ctx.getLogger(LogManager.ROOT_LOGGER_NAME);
final Layout<String> layout = PatternLayout.newBuilder()
.withConfiguration(ctx.getConfiguration())
.withPattern("some pattern")
.build();
final Appender appender = ConsoleAppender.newBuilder()
.setName("some name")
.setLayout(layout)
.build();
/*
* This is simpler, but it is not API:
*
* logger.addAppender(appender);
*
* Instead we shoud use:
*/
ctx.getConfiguration().addLoggerAppender(logger, appender);
备注:这是当前配置的临时补丁。如果重新加载配置(例如log4j2.xml
文件更改),修改将丢失。
于 2022-02-21T09:09:28.870 回答