Ответ 1
Я проголосую за 3
private static final Logger LOGGER = Logger.getLogger(ServiceImpl.class);
Это final
, так как вы его не меняете, а в верхнем регистре, так как это константа.
Я просто хочу знать, какой лучший способ объявить переменную регистратора в java. Ниже приведены некоторые объявления.
1> private static final Logger logger = Logger.getLogger(ServiceImpl.class);
2> private static Logger logger = Logger.getLogger(ServiceImpl.class);
3> private static final Logger LOGGER= Logger.getLogger(ServiceImpl.class);
4> private static Logger LOGGER= Logger.getLogger(ServiceImpl.class);
P.S Я очень ценю, если кто-нибудь знает еще один лучший альтернативный способ объявить переменную looger.
Я проголосую за 3
private static final Logger LOGGER = Logger.getLogger(ServiceImpl.class);
Это final
, так как вы его не меняете, а в верхнем регистре, так как это константа.
Все имена переменных верхнего регистра являются ИМО, потому что вы действительно не объявляете/не определяете константу, а статическую переменную. Имена верхнего регистра более подходят для "констант". Тем не менее, я лично пошел бы с первым подходом.
private static final Logger logger = Logger.getLogger(ServiceImpl.class);
Я лично считаю, что private static final Logger LOGGER= Logger.getLogger(ServiceImpl.class);
- лучший способ использовать семантические и служебные соображения:
Я бы пошел с первым вариантом, но я думаю, что это вопрос личного выбора.
Первый вариант лучше. Я предпочитаю, чтобы регистратор был final
и static
....
В моем понимании руководства по стилю java лучше всего использовать "logger". "LOGGER" будет для определенной константы.
Кроме того, использование "final" должно сделать его немного быстрее.
Таким образом, # 1.
Я бы рекомендовал не использовать такую переменную в каждом классе, а вместо этого делегировать эту работу на статическую оболочку утилиты вокруг slf4j, из jcabi-log:
Logger.debug(this, "some variable = %s", value);
Отметьте также этот пост: http://www.yegor256.com/2014/05/23/avoid-java-static-logger.html
Хорошей практикой программирования является совместное использование одного объекта регистрации между всеми экземплярами конкретного класса и использование одного и того же регистратора на протяжении всей программы, поэтому мы используем static
и final
для журналов.
Не рекомендуется использовать несколько журналов (плохая практика ведения журналов), а не уровни ведения журнала.
Я думаю, что
private static final Logger logger = Logger.getLogger(ServiceImpl.class);
- лучший вариант.
Никто здесь не использует LOG
или LOG
? Я нашел, что на практике это было лучше. (Конечно, я не первый, кто работал над местом, где этот стандарт, потому что @Log4j
в Ломбоке генерирует поле LOG
. Конечно, это также статичное окончание. И BTW, что лучший способ объявить это поле... добавьте аннотацию @Log4j
. Сделано.)