Відповідаю на це з архітектури, що базується на компонентах, де в організації може працювати багато компонентів, які можуть покладатися один на одного. Під час розповсюдження невдачі рівні реєстрації повинні допомогти визначити як компоненти, які впливають, так і які є першопричиною.
ПОМИЛКА - У цього компонента стався збій, і причина, як вважають, є внутрішньою (будь-яка внутрішня, необроблена виняток, збій інкапсульованої залежності ... наприклад, база даних, приклад REST, якщо він отримав 4xx помилку від залежності). Виведіть мене (підтримувача цього компонента) з ліжка.
ПОПЕРЕДЖЕННЯ - Цей компонент мав помилку, спричинену залежним компонентом (прикладом REST було б статус 5xx від залежності). Встаньте обслуговуючого складу ТОГО компонента з ліжка.
ІНФОРМАЦІЯ - Все, що ми хочемо дістати до оператора. Якщо ви вирішили реєструвати щасливі шляхи, то я рекомендую обмежитись 1 повідомленнями журналу на значну операцію (наприклад, на вхідний запит http).
Для всіх повідомлень журналу обов'язково записуйте корисний контекст (і надайте пріоритет для того, щоб зробити повідомлення зрозумілими / корисними для людей, а не мати пучки "кодів помилок")
- DEBUG (і нижче) - Не слід застосовувати взагалі (і, звичайно, не у виробництві). У розробці я б порадив використовувати комбінацію TDD та налагодження (де це необхідно) на відміну від забруднювального коду з операторами журналу. У виробництві вищевказаний журнал INFO у поєднанні з іншими показниками повинен бути достатнім.
Хороший спосіб візуалізації вищевказаних рівнів ведення журналу - це уявити набір екранів моніторингу для кожного компонента. Якщо все працює добре, вони зелені, якщо компонент записує ПОПЕРЕДЖЕННЯ, тоді він перейде в помаранчевий (бурштиновий), якщо що-небудь записує помилку, то він переходить у червоний колір.
У випадку інциденту у вас повинен бути один (першопричиною) червоний колір, а всі постраждалі компоненти повинні перейти в оранжевий / бурштиновий.