Должен ли регистратор быть всегда финальным и статичным? - PullRequest
18 голосов
/ 06 сентября 2011

Класс может быть доступен из многих потоков.Должен ли регистратор в этом случае также быть окончательным и статичным?Спасибо.

Ответы [ 3 ]

29 голосов
/ 06 сентября 2011

Все основные пакеты журналов Java (java.util.logging, log4j и т. Д.) Синхронизированы и поточно-ориентированы. Стандартный шаблон private final static регистратора для класса подходит, даже если класс вызывается из нескольких потоков.

4 голосов
/ 06 сентября 2011

Да, регистратор должен быть статичным и окончательным. Также желательно частное. В каждом классе должен быть только один экземпляр регистратора, и кроме того, если вы не собираетесь динамически изменять настройки журнала, лучше сделать их окончательными.

Регистратор является поточно-ориентированным, и вам не нужно беспокоиться о потоке.

2 голосов
/ 06 сентября 2011

Окончательное и / или статическое выполнение логгера никоим образом не повлияет на поточную безопасность использования логгера. Если экземпляр регистратора используется из нескольких потоков, убедитесь, что вы используете потоково-безопасный регистратор.

В общем случае логгер должен быть закрытым static final, но не думайте, что это делает его поточно-ориентированным. Наиболее распространенные каркасы журналирования являются поточно-ориентированными, поэтому, если вы используете одну из них, вам следует подойти.

...