log4j ConsoleAppender 跟随参数的目的是什么?

What is the purpose of log4j ConsoleAppender follow parameter?

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

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

这一行除了follow="true"我都看懂了,我在官网看了这个参数的说明:This Website。我也尝试在其他网站上搜索,但无济于事。

描述是这样的:

这个描述让我感到困惑,“荣誉重新分配......”是什么意思,它的目的是什么,如果我将它更改为 false.

会发生什么

System.out属性不是read-only,可以通过System#setOut重新赋值。使用 follow="true",appender 会将消息发送到 System.outcurrent 值,而使用 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'");

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