Какова цель следования за параметром log4j ConsoleAppender?
В примере, который я использую, в файле конфигурации log4j есть следующая строка:
<Console name="ConsoleAppender" target="SYSTEM_OUT" follow="true">
Я понял в этой строке все, кроме
follow="true"
, я прочитал описание именно этого параметра на официальном сайте: This Website . Пробовал искать и на других сайтах, но безрезультатно.
Описание выглядит следующим образом:
Это описание привело меня в замешательство. Что они подразумевают под «переназначением с отличием…», какова его цель, что произойдет, если я изменю его на
false
.
1 ответ
Свойство доступно не только для чтения и может быть переназначено черезSystem#setOut
. При использовании приложения приложение отправит сообщение с текущим значением , тогда как с помощью журналов будет отправлено исходное значение .
Вы можете проверить два поведения с помощью:
// 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
редко переназначается .