0

在我下面的示例中,log4j 配置文件中有这样一行:

<Console name="ConsoleAppender" target="SYSTEM_OUT" follow="true">

我理解了这一行的所有内容,除了follow="true",我已经阅读了官方网站上这个特定参数的描述:这个网站。我也尝试在其他网站上搜索,但无济于事。

描述是这样的: 跟随参数

这个描述让我很困惑,他们所说的“荣誉重新分配......”是什么意思,它的目的是什么,如果我把它改成 会发生什么false

4

1 回答 1

2

System.out属性不是只读的,可以通过 重新分配System#setOut。使用follow="true"appender 会将消息发送到 的当前System.out,而使用follow="false"日志将发送到 的原始值System.out

您可以使用以下方法测试这两种行为:

      // This performs automatic initialization
      final Logger logger = LogManager.getLogger(Log4j2Test.class);
      // System.out is attached to the JVM's `stdout`
      logger.warn("Sent to 'stdout'");
      // Reassignement of System.out
      System.setOut(new PrintStream(new File("file.log")));
      // System.out is attach to the file 'file.log'
      logger.warn("Sent to 'file.log'");

从实际的角度来看,with 的性能follow="true"比 with 差,follow="false"并且很少System.out被重新分配。

于 2022-02-17T12:40:52.027 回答