У Log4J, Slf4J та ще декількох інших системах ведення журналів на Java у вас є два рівні "розробника" для ведення журналів:
- ВІДЛАГОДЖУВАТИ
- СЛІД
Я розумію, що робить DEBUG, тому що пояснення зрозуміло:
Рівень DEBUG позначає дрібнозернисті інформаційні події, які найбільш корисні для налагодження програми.
Але рівень TRACE не дуже специфічний щодо випадку його використання:
Рівень TRACE позначає дрібніші інформаційні події, ніж ДЕБУГ
(Джерело: log4J JavaDoc )
Це не говорить мені, як і коли використовувати TRACE. Цікаво, що це не рівень вираженості, визначений у стандарті syslog . Гуглінг за різницею між TRACE і DEBUG лише здається, що "використовуйте DEBUG, о, і TRACE теж". Не вдалося знайти конкретного випадку використання для рівня TRACE. Найкраще, що я міг знайти, - це стара вікі-сторінка, яка обговорює заслуги існування рівня.
Це, як архітектор, викликає у моїй голові багато прапорів та питань. Якби молодий розробник попросив мене додати TRACE до своєї архітектури, я б бомбардував його запитаннями:
- Наведіть декілька прикладів інформації, яку слід реєструвати в TRACE, а не в DEBUG?
- Яку конкретну проблему я вирішую, записуючи цю інформацію?
- У цих прикладах, які властивості вхідної інформації, що чітко розрізняють ведення журналу на рівні TRACE, а не на рівні DEBUG?
- Чому ця інформація повинна пройти через інфраструктуру журналу?
- Які переваги зберігати цю інформацію в журналах журналів, а не просто використовувати
System.out.println
? - Чому для цього краще використовувати журнал, а не налагоджувач?
- Які переваги зберігати цю інформацію в журналах журналів, а не просто використовувати
- Що може бути канонічним прикладом ведення журналу на рівні TRACE?
- Які конкретні вигоди, які були досягнуті за допомогою реєстрації на рівні TRACE замість DEBUG у прикладі?
- Чому ці здобутки важливі?
- І навпаки: Яких проблем я уникнув, ввівши його в TRACE замість DEBUG?
- Як інакше я міг вирішити ці проблеми? Чому журнал на рівні TRACE кращий, ніж ті інші рішення?
- Чи слід у виробничому коді залишити оператор журналу рівня TRACE? Чому?
Але враховуючи, що він присутній у більшості основних рамків, я здогадуюсь, що це корисно для чогось? Отже ... що таке TRACE, і чим він відрізняється від DEBUG?