Регистратор в каждом классе лучше и проще в расширении.
Причина в том, что определение одного регистратора в одном классе легко отделяет реальный API регистрации от конфигурации регистратора (формат, постоянство).
Я работал с более чем одним большим и сложным Java-программным обеспечением (> 1 миллиона строк кода), все они используют один регистратор на класс.
Кроме того, определение «один регистратор на класс» не означает, что каждый класс использует отдельный экземпляр регистратора.
class Foo {
private static final Logger log = Logger.getLogger( Foo.class );
}
class Bar {
private static final Logger log = Logger.getLogger( Bar.class );
}
Неясно, используют ли два регистратора, на которые ссылается приведенный выше код, один и тот же экземпляр регистратора. Обычно, есть место конфигурации (в файле свойств или в коде), которое указывает, разделяют ли регистраторы в Foo и Bar экземпляр регистратора.
Таким образом, «регистратор в каждом классе» просто определяет один регистратор для каждого класса, но такие регистраторы могут ссылаться на один и тот же экземпляр регистратора, используемый в разных классах