java .util.logging.Logger метод info () класса является операцией ввода / вывода? - PullRequest
0 голосов
/ 16 января 2020

Я видел переполнение стека, когда дело доходит до приложений промышленного уровня на стороне сервера, использующих каркас логгера над System.out.println () - эффективный способ работы с журналированием. И я также отмечаю, что System.out.println ( ) является операцией ввода-вывода, потому что она требует большей загрузки процессора. Так что мне нужно знать, logger.info () [который является встроенным классом, поставляемым с Java] является операцией ввода-вывода или нет, и объяснение, почему если это не так.

1 Ответ

2 голосов
/ 16 января 2020

Это зависит от зарегистрированных обработчиков.

По умолчанию JUL выводит на консоль через ConsoleHandler, что является операцией ввода-вывода. Если ведение журнала настроено с помощью обработчика, который регистрирует в файл (FileHandler) или через сеть (SocketHandler), это также будет операция ввода-вывода.

Существует также MemoryHandler, что не сделать запись операции ввода-вывода. Но у него очень и очень ограниченная полезность.

Использование другого каркаса журналов, такого как SLF4J, не меняет этого. Ведение журнала по своей сути является операцией ввода-вывода, поскольку вы хотите, чтобы журнал был доступен вне приложения и даже после завершения процесса. Тем не менее, по разным причинам выгодно использовать фреймворк, такой как SLF4J (ср. Почему бы не использовать java .util.logging? ).

...