В Log4J, Slf4J и нескольких других средах ведения журналов в Java у вас есть два уровня «разработки» для ведения журнала:
- DEBUG
- TRACE
Я понимаю, что делает DEBUG, потому что объяснение ясно:
Уровень DEBUG обозначает детализированные информационные события, которые наиболее полезны для отладки приложения.
Но уровень TRACE не очень конкретен в отношении его варианта использования:
Уровень TRACE обозначает более детальные информационные события, чем DEBUG.
(Источник: log4J JavaDoc )
Это не говорит мне, как и когда использовать TRACE. Интересно, что это не уровень серьезности, определенный в стандарте системного журнала . Похоже, что поиск в Google различий между TRACE и DEBUG возвращает «используйте DEBUG, о, да и TRACE тоже есть». Я не смог найти конкретный вариант использования для уровня TRACE. Лучшее, что я мог найти, была эта старая вики-страница, обсуждающая достоинства существования уровня.
Это, как архитектор, вызывает много вопросов и вопросов в моей голове. Если бы молодой разработчик попросил меня добавить TRACE в мою архитектуру, я бы засыпал его вопросами:
- Каковы некоторые примеры информации, которая должна регистрироваться с TRACE, а не с DEBUG?
- Какую конкретную проблему я решаю, регистрируя эту информацию?
- В этих примерах, каковы свойства регистрируемой информации, которая четко различает журналирование на уровне TRACE, а не на уровне DEBUG?
- Почему эта информация должна проходить через инфраструктуру журналов?
- Каковы преимущества сохранения этой информации в журналах журналов, а не просто использования
System.out.println
? - Почему для этого лучше использовать log, а не отладчик?
- Каковы преимущества сохранения этой информации в журналах журналов, а не просто использования
- Что будет каноническим примером регистрации на уровне TRACE?
- Каковы конкретные выгоды, которые были получены путем регистрации на уровне TRACE вместо DEBUG в этом примере?
- Почему эти выгоды важны?
- И наоборот: каких проблем я избежал, зарегистрировав их в TRACE вместо DEBUG?
- Как еще я мог решить эти проблемы? Почему регистрация на уровне TRACE лучше, чем в других решениях?
- Должен ли оператор уровня TRACE оставаться в производственном коде? Почему?
Но учитывая, что он присутствует в большинстве основных структур, я предполагаю, что это полезно для чего-то? Итак ... для чего нужна TRACE, и чем она отличается от DEBUG?