У меня есть проект на Java, и я создаю семь регистраторов, к которым обращается фасад из каждой точки программы. Но в Интернете я вижу много примеров с регистратором в каждом классе.
Каков наиболее рекомендуемый способ ведения журнала?
У меня есть проект на Java, и я создаю семь регистраторов, к которым обращается фасад из каждой точки программы. Но в Интернете я вижу много примеров с регистратором в каждом классе.
Каков наиболее рекомендуемый способ ведения журнала?
Регистратор в каждом классе лучше и проще в расширении. Причина в том, что определение одного регистратора в одном классе легко отделяет реальный 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 экземпляр регистратора.
Таким образом, "регистратор в каждом классе" просто определяет один регистратор для каждого класса, но такие регистраторы могут ссылаться на один и тот же экземпляр регистратора, используемый в разных классах.
Я использую один регистратор для каждого класса для всех технических аспектов, например. ведение журнала, отслеживание, отладка, метод ввода/вывода (private static final...
). Часто я использовал общие журналы для функциональных аспектов, например. контрольные журналы, безопасность; public Logger в общем классе.
Я не знаю стандартов или общих рекомендаций, но этот подход работал хорошо для меня.
Я бы порекомендовал вам использовать некоторые фреймворки для ведения журнала, вы можете найти их много, будучи одним из самых популярных log4j, это сэкономит вам много усилий, пытаясь изобретать велосипед, поскольку они уже поставляются с большинством передовой практики.
Общепринятая практика, если вы используете некоторую систему ведения журнала, такую как Log4J, заключается в том, чтобы получить регистратор в статической переменной для каждого класса.
class Foo {
private static final Logger log = Logger.getLogger( Foo.class );
}
С большинством фреймворков регистрации вы можете определить уровни журналов (WARN, ERROR, DEBUG), а также шаблон для приложений, чтобы вы могли сохранять сообщения в разных файлах, фильтруя по различным критериям.
Также с помощью этих фреймворков вы можете легко установить такие вещи, как вращение журнала, что может быть весьма полезно