当前位置: 首页 > 知识库问答 >
问题:

如何通过编程将控制台附加器(具有模式布局)添加到根记录器

文志学
2023-03-14

我需要以编程方式将具有模式布局的控制台appender添加到Root Logger。我之前使用log4j1. x的代码类似于Logger.getLogger(new Appender(控制台、fname、模式布局、“特定模式”)如何将此转换为log4j 2.3.2

共有1个答案

东方华晖
2023-03-14

Log4j 2.3.2是一个旧版本,缺乏许多新功能,如ConfigurationBuilder API。

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

      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文件更改),修改将丢失。

 类似资料:
  • 我无法使用logger添加控制台appender。addAppender方法与log4j-over-slf4j 1.7.x依赖。此外,我无法设置特定控制台附加器的目标(即SYSTEM\u OUT/SYSTEM\u ERR)。 我已经初始化了一个控制台appender对象,并试图通过将该引用类型化为Appender来将该引用推送到addAppender方法中。但是在这种情况下,我无法为控制台appe

  • 尽管awsmobile cli具有启用和配置AppSync后端的功能,如: 它很容易以完全不相关的配置告终:它在us-west-2(俄勒冈州)中创建DynamoDB表,即使我的项目位于eu-Central-1(法兰克福)。它是通过默认的“事件”图形模式实现的。毕竟,它不会作为后端功能出现在MobileHub项目控制台上。 现在,我想做的事情是通过控制台向AWS MobileHub项目添加AppSy

  • 我试图将命令提示符中打印出来的信息从JAVA控制台显示到C#。当在JAVA中发出System.out.println时,它可以很好地工作,但是它不能用于logger.info print out。 注意:当我通过windows命令提示符(CMD>java-jar testbed.jar)运行它时,记录器信息会在命令提示符中打印出来。 JAVA来做一个简单的增量和减量数字,当按下按钮进行增量或减量时

  • 我知道:- 但是,createAppender和createLogger是V2.11中不推荐使用的方法。 此外,我还知道ConfigurationBuilder。我已经试用了它,它似乎是为了以编程方式构建配置。我需要从log4j2.xml文件中获得默认配置。并追加新的追加器(带有新的文件名和记录器)。

  • 在log4j1.2中,您只需在运行时获取一个记录器并添加一个appender。例如,这对于测试目的很方便。我们曾经创建一个模拟appender并将其添加到记录器中。随后,我们可以做出不同的断言。 log4j2的等价物是什么? 例如,这个例子展示了其他人是如何添加测试附加器的。 log4j2页面显示了一些关于如何添加附加器的示例。但是,它们将追加器添加到整个上下文中。这似乎不同于为一个特定的记录器添

  • 我的记录器只记录根记录器ServerAppenderV2上的消息,日志文件是正确生成的,当我在root中使用change the level to debug时,我可以在root中定义的两个appender中看到日志,但在文件appenders FileAppender和perfappender中仍然没有日志。 对于以下代码: 下面是我的Logger类和标记: 下面是我的配置log4j2.xml: