现在我们从log4j迁移到log4j2。配置文件没有更改(仅包括控制台追加器)。我们希望在运行时添加文件追加器,因此会创建日志文件,但不会显示日志。当我们使用log4j时,我们这样做:
PatternLayout layout = new PatternLayout("%d - " + DEFAULT_CONVERSION_PATTERN);
FileAppender fileAppender = new FileAppender(layout, file.getPath());
fileAppender.setName("fileAppender");
logger.removeAllAppenders();
logger.addAppender(fileAppender);
logger.addAppender(new ConsoleAppender(layout));
它运行得很好。但是当我们转到log4j2时,我们开始使用以下代码:
PatternLayout layout = PatternLayout.newBuilder().withPattern("%d - " + DEFAULT_CONVERSION_PATTERN).build();
FileAppender fileAppender = FileAppender.newBuilder().setLayout(layout).withFileName(file.getPath())
.setName("fileAppender").build();
LoggerContext.getContext().getLogger(name).getAppenders().clear();
LoggerContext.getContext().getLogger(name).addAppender(fileAppender);
LoggerContext.getContext().getLogger(name).addAppender(ConsoleAppender.newBuilder().setLayout(layout).build());
文件已创建,但日志仅显示在控制台中...有人能帮助您有效创建FileAppender吗?
1条答案
按热度按时间pieyvz9o1#
从您的描述来看,您似乎成功地示例化了一个FileAppender,该FileAppender已准备好记录它接收到的消息,但不知何故,没有消息传递到此Appender。
您的代码示例调用了一个不存在的方法
LoggerContext.getContext()
-我认为这应该是LoggerContextFactory.getContext()或LogManager.getContext()。