0

我需要以编程方式将具有模式布局的控制台附加程序添加到 Root Logger。我以前使用 log4j1.x 的代码有类似 Logger.getLogger(new Appender(console,fname,patternlayout,"Specific pattern") How to convert this one to log4j 2.3.2

4

1 回答 1

0

Log4j 2.3.2 是一个旧版本,缺少许多新功能,例如ConfigurationBuilderAPI

但是,您可以构建控制台附加程序并通过以下方式直接附加到根记录器:

      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 回答