在我下面的示例中,log4j 配置文件中有这样一行:
<Console name="ConsoleAppender" target="SYSTEM_OUT" follow="true">
我理解了这一行的所有内容,除了follow="true"
,我已经阅读了官方网站上这个特定参数的描述:这个网站。我也尝试在其他网站上搜索,但无济于事。
这个描述让我很困惑,他们所说的“荣誉重新分配......”是什么意思,它的目的是什么,如果我把它改成 会发生什么false
。
在我下面的示例中,log4j 配置文件中有这样一行:
<Console name="ConsoleAppender" target="SYSTEM_OUT" follow="true">
我理解了这一行的所有内容,除了follow="true"
,我已经阅读了官方网站上这个特定参数的描述:这个网站。我也尝试在其他网站上搜索,但无济于事。
这个描述让我很困惑,他们所说的“荣誉重新分配......”是什么意思,它的目的是什么,如果我把它改成 会发生什么false
。
该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
被重新分配。