Причина в том, что отправка сообщений на стандартный вывод обычно не подходит в производственной среде. Если вы кодируете библиотеку, библиотека должна возвращать информацию своему вызывающему, а не печатать на stdout. Если вы кодируете приложение с графическим интерфейсом, информация должна быть представлена пользователю, а не тому, где указывается то, что stdout указывает (что может быть нигде). Если вы кодируете сервер (или что-то, что выполняется в контейнере на стороне сервера), вы должны использовать любой механизм ведения журнала, предоставленный инфраструктурой. И так далее.
Регистратор дает возможность определить различные уровни важности регистрируемых сообщений, а также возможность использовать различную мойку для вывода - консоль, файл и т.д.
Также легко включить или отключить только некоторый тип сообщения при использовании регистратора - например, вы не хотите видеть каждое сообщение отладки в процессе производства.
Я не думаю, что использование логгеров дает какие-либо существенные преимущества в модульных тестах, но я бы предпочел его даже там. В модульных тестах утверждения, как правило, являются моей главной задачей.
Кстати, вы должны подумать о том, чтобы использовать что-то вроде Commons Logging или SLF4J как фасад фреймворка - это плохой стиль, чтобы связать ваш код с конкретной структурой ведения журнала. Common Logging и SLF4J позволяют легко переключаться на фреймворки регистрации, если вы решите.
Вы должны иметь ограниченное взаимодействие с пользователем в большинстве ваших классов и в самом деле кода пользовательского интерфейса должен быть отделен в своем собственном наборе класса. Вам следует попытаться написать код модели (не-UI), чтобы он мог хорошо работать в консольном приложении, приложении Swing, приложении SWT или другом приложении типа библиотеки UI. Таким образом, ваш код может работать с SOP или с графическим интерфейсом, как вы сочтете нужным. Я стану утверждать, что> 90% классов Java, созданных профессиональными кодировщиками, не содержат в них кода пользовательского интерфейса. –
+ общий дизайн неправильный –