Доступ к классам возможен из многих потоков. Должен быть журнал в этом случае также является окончательным и статическим? Спасибо.
Должен ли журнал всегда быть окончательным и статическим?
Ответ 1
Все основные пакеты регистрации java (java.util.logging
, log4j
и т.д.) синхронизированы и потокобезопасны. Стандартный шаблон журнала private final static
для каждого класса хорош, даже если класс вызывается из нескольких потоков.
Ответ 2
Да, журнал должен быть статическим и окончательным. Также предпочтительно закрытый. Для каждого класса должен быть только один экземпляр журнала, а также, если вы не будете динамически изменять предпочтения журнала, лучше сделать его окончательным.
Logger безопасен потоком, и вам не нужно беспокоиться о потоковом использовании.
Ответ 3
Создание конечного и/или статичного журнала не повлияет на безопасность потока при использовании регистратора. Если экземпляр регистратора используется из нескольких потоков, убедитесь, что вы используете потокобезопасный журнал.
В общем случае журнал должен быть закрытым статическим окончательным, но не предполагайте, что это делает его потокобезопасным. Большинство распространенных фреймворков протоколирования являются потокобезопасными, поэтому, если вы используете один из них, вы должны быть хорошими.