Другая перспектива только с точки зрения ведения журнала.
Я вижу много дискуссий, связанных с входом в эту ветку, поэтому подумал добавить свой опыт в ответ. Может быть, кто-то найдет это полезным.
Полагаю, мотивация ведения журнала с использованием форматера заключается в том, чтобы избежать конкатенации строк. По сути, вы не хотите иметь издержки на строку concat, если вы не собираетесь ее регистрировать.
Вам не нужно выполнять конкататацию / форматирование, если вы не хотите регистрироваться. Скажем, если я определю метод, подобный этому
public void logDebug(String... args, Throwable t) {
if(debugOn) {
// call concat methods for all args
//log the final debug message
}
}
В этом подходе cancat / formatter на самом деле вообще не вызывается, если это сообщение отладки и debugOn = false
Хотя здесь все равно будет лучше использовать StringBuilder вместо форматера. Основная мотивация - избегать всего этого.
В то же время я не люблю добавлять блок «if» для каждого оператора логирования, начиная с
- Влияет на читабельность
- Уменьшает охват моих модульных тестов - это сбивает с толку, когда вы хотите убедиться, что каждая строка проверена.
Поэтому я предпочитаю создавать класс утилиты ведения журнала с помощью методов, описанных выше, и использовать его везде, не беспокоясь о падении производительности и любых других проблемах, связанных с ним.