在我下面的示例中,在log4j配置文件中有这样一行:
<Console name="ConsoleAppender" target="SYSTEM_OUT" follow="true">
除了follow="true"
,我已经了解了这行中的所有内容,我已经在官方网站上阅读了这个参数的说明:This Website。我也试着在其他网站上搜索,但无济于事。
描述如下:
此描述让我感到困惑,他们所说的荣誉重新分配是什么意思.....&q;,它的目的是什么,如果我将其更改为false
会发生什么。
System.out
属性不是只读的,可以通过System#setOut
重新分配。对于follow="true"
,附加器将消息发送到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'");
从实际角度看,follow="true"
的性能比follow="false"
和System.out
很少重新分配的性能差。