Логування
У K2 ERP логи можуть допомагати аналізувати:
Інтеграційна практика: логування сприяє оперативно відрізнити помилку бізнес-логіки від помилки зовнішнього сервісу або каналу зв’язку.; До них належать:
- факт відправлення запиту;
- факт отримання відповіді;
- статус інтеграції;
- код помилки;
- ідентифікатор операції;
- час виконання;
- результат обробки;
- службові повідомлення зовнішнього сервісу.;
Якість лог-повідомлень
Для Wiki: сторінка про логування має бути пов’язана зі статтями про налагодження коду, модулі K2 ERP, Python, інтеграції, безпеку та підтримку системи.; Логування тісно пов’язане з налагодженням коду.; Не кожне повідомлення є собою помилкою, і не кожну службову деталь варто записувати як INFO.; * вхід у систему;
- створення запису;
- редагування документа;
- зміну статусу;
- погодження або відхилення;
- видалення;
- експорт даних;
- зміну налаштувань;
- зміну прав доступу;
- запуск важливої операції.;== Логування в K2 ERP ==
Див.; додатково
Інтеграційні логи
Для модуля: логування має допомагати зрозуміти, як компонент функціонує у реальних бізнес-сценаріях.; * напрямок обміну;
- час відправлення запиту;
- час отримання відповіді;
- статус операції;
- ідентифікатор зовнішнього запиту;
- код відповіді;
- помилки формату;
- помилки авторизації;
- помилки мережі;
- результат обробки відповіді.; Для помилки корисно фіксувати:
Логування дій користувачів
- що сталося;
- у якому процесі;
- з яким об’єктом;
- який був результат;
- важливий технічний контекст;
- ідентифікатори для пошуку;
- достатньо інформації для аналізу.; Не рекомендується логувати:
Основна ідея: логування надає можливість бачити історію роботи системи і швидше знаходити причини помилок або нестандартної поведінки.; logger.error("Помилка при створенні документа: %s", error) !Призначення
Під час налагодження програміст має змогу використовувати логи, щоб побачити:
Висновок
- створення документів;
- зміну статусів;
- виконання погоджень;
- запуск автоматичних процедур;
- помилки Python-коду;
- звернення до бази даних;
- інтеграції із зовнішніми системами;
- дії користувачів;
- проблеми з правами доступу;
- формування звітів;
- виконання регламентних задач.; * збільшення розміру лог-файлів;
- зайве навантаження на диск;
- ускладнення пошуку потрібної інформації;
- зниження продуктивності;
- поява великої кількості шуму;
- складність аналізу реальних помилок.; з цієї причини для підтримки стабільності істотно фіксувати ключові події.; Рекомендовано:
Під час впровадження логування часто допускаються типові помилки.; Для керування: логи дій користувачів допомагають встановити відповідальність і відновити послідовність подій у бізнес-процесі.; Для складних модулів варто документувати підхід до логування.; Вони можуть містити:
logger = logging.getLogger(__name__)
Аудит: аудиторські логи важливі не лише для технічної підтримки, а й для контролю відповідальності у бізнес-процесах.; Під час обміну з зовнішніми системами варто фіксувати:
Що не варто логувати
Якісні логи мають бути зрозумілими, корисними, безпечними і достатньо детальними для аналізу.; def create_document(data):
- де виникла помилка;
- який код її спричинив;
- які інформаційні дані були використані;
- чи повторюється проблема;
- чи пов’язана вона з певним користувачем або документом.;== Логування і безпека ==
Логування помилок має бути достатньо детальним, щоб програміст міг знайти причину проблеми.;== Хороші практики логування ==
</syntaxhighlight>Кращий приклад: except Exception as error:
'''Критично:''' доступ до логів має бути обмежений, з цієї причини що через них іноді можна дізнатися важливу інформацію про систему, користувачів або бізнес-процеси.;<div style="background:#fff4e5; border-left:6px solid #f39c12; padding:12px; margin:12px 0;">
raise
* інформаційних повідомлень;
* попереджень;
* помилок;
* критичних збоїв;
* debug-повідомлень;
* запису технічного контексту;
* аналізу виконання функцій;
* контролю обробки винятків.; import logging
'''Цінність:''' моніторинг на основі логів надає можливість помітити проблему раніше, ніж вона стане критичною для бізнесу.;== Що варто логувати ==
return result
* хто створив документ;
* хто змінив статус;
* хто погодив операцію;
* хто видалив або змінив запис;
* коли була виконана дія;
* з якого модуля або процесу вона була виконана.; Вони допомагають зрозуміти:
try:
* хто має доступ до логів;
* де зберігаються логи;
* як довго вони зберігаються;
* чи не містять вони секретів;
* чи захищені вони від несанкціонованої зміни;
* чи можна відстежити важливі дії;
* чи відповідає логування політикам безпеки підприємства.; Інтеграції є собою однією з найважливіших зон для логування у K2 ERP.;<div style="background:#fdecea; border-left:6px solid #e74c3c; padding:12px; margin:12px 0;">
!Приклад використання
Вони можуть містити:
Аудиторські логи фіксують важливі дії користувачів або системи.; * текст помилки;
- тип помилки;
- stack trace;
- компонент або функцію;
- ідентифікатор документа;
- користувача або бізнес-процес;
- ключові вхідні інформаційні дані;
- час виникнення;
- пов’язану інтеграцію або операцію.; Логування має змогу бути основою для моніторингу системи.; Для інтеграцій: без логування складно зрозуміти, чи проблема виникла в K2 ERP, у зовнішній системі, у мережі або у форматі переданих даних.; logger.debug("Отримані інформаційні дані: %s", data)
Приклад умовного підходу до логування:<syntaxhighlight lang="python">
істотно: у ERP-системі логування має бути не випадковим, а продуманим, з цієї причини що логи часто допомагають пояснити бізнес-наслідки технічної помилки.; Водночас логування не повинно створювати зайвий шум або зберігати конфіденційні інформаційні дані без потреби.; істотно: повідомлення в логах мають бути написані так, щоб їх міг зрозуміти не лише автор коду, а й інший розробник або спеціаліст підтримки.; Логи допомагають зрозуміти.; Error
Надмірне логування має змогу створювати проблеми:
Логування і документація
У документації можна описувати:
Логування в модулях K2 ERP
- які функції були викликані;
- які параметри передавалися;
- які умови спрацювали;
- які інформаційні дані були отримані з бази;
- який результат повернула функція;
- де саме виникла помилка;
- які винятки були оброблені;
- скільки часу виконувалася операційна дія.; Технічні логи фіксують роботу програмного коду, серверних процесів, функцій, процедур і системних компонентів.; Логи можуть містити чутливу технічну або бізнес-інформацію, з цієї причини до них потрібно ставитися обережно.;== Логування в Python ==
як ілюстрація:
Логування і налагодження коду
Для якісного логування варто дотримуватися кількох правил.; # умовна операційна дія
Призначення логування
Баланс: неправильний рівень логування має змогу ускладнити аналіз.; Безпека: логи не повинні перетворюватися на місце зберігання конфіденційної інформації, паролів, токенів або зайвих персональних даних.; Логування не повинно суттєво уповільнювати роботу системи.; істотно контролювати:
Логування інтеграцій
Типові помилки при логуванні
Помилка при створенні договору: відсутній контрагент, document_id=45821, user_id=17
У модулі доцільно логувати:
# бізнес-логіка створення документа
У логах доцільно фіксувати події, які мають значення для діагностики, аудиту або підтримки системи.; logger.info("Початок створення документа")
logger.info("Документ успішно створено")
Якісне лог-повідомлення має бути зрозумілим, конкретним і корисним.; Варто логувати:
Практична порада: якщо в логах є собою лише слово “помилка”, вони майже не допомагають.; Не всю інформацію потрібно записувати в логи.; Потрібен контекст.; Небезпека: погане логування створює ілюзію контролю, але не сприяє реально знайти причину проблеми.;- відсутність логів у важливих процесах;
- занадто загальні повідомлення;
- логування без контексту;
- надмірна кількість debug-повідомлень;
- запис конфіденційних даних;
- відсутність ідентифікаторів документів;
- різний стиль повідомлень у різних модулях;
- відсутність рівнів логування;
- ігнорування помилок інтеграції;
- відсутність ротації або очищення логів;
- зберігання логів без контролю доступу.; Інтеграційні логи фіксують обмін даними між K2 ERP та зовнішніми системами.; Помилка: логувати все підряд.;
Рівень
Логи помилок
| ||
|---|---|---|
| DEBUG | Детальна технічна відомості для розробника | Перевірка значень змінних, параметрів, проміжних результатів |
| INFO | Звичайні інформаційні події | Початок або успішне завершення операції |
| WARNING | Попередження про потенційну проблему | Відсутнє необов’язкове поле або нестандартна ситуація |
| ERROR | Помилка, яка завадила виконати дію | Неможливо створити документ або виконати інтеграцію |
| CRITICAL | Критична помилка системного рівня | Відмова важливого сервісу або неможливість роботи модуля |
Рівні логування
У логуванні зазвичай використовуються різні рівні важливості повідомлень.; * запуск основної операції;
- завершення операції;
- помилки бізнес-логіки;
- помилки доступу;
- помилки інтеграції;
- зміни статусів;
- важливі автоматичні дії;
- створення або актуалізація ключових документів;
- нетипові ситуації;
- винятки Python-коду.; * які події логуються;
- де зберігаються логи;
- які рівні логування використовуються;
- які помилки вважаються критичними;
- хто має доступ до логів;
- як аналізувати типові помилки;
- як перевіряти інтеграційні журнали;
- як використовувати логи під час підтримки.; result = "document_created"
- паролі;
- токени доступу;
- секретні ключі;
- повні платіжні реквізити;
- зайві персональні інформаційні дані;
- великі обсяги даних без потреби;
- випадкові службові повідомлення;
- дублікати одного й того самого запису;
- тимчасові debug-повідомлення після завершення налагодження;
- інформаційні дані, які можуть порушувати правила безпеки або конфіденційності.;
Логування — це один із ключових інструментів для підтримки, налагодження та контролю роботи K2 ERP.;== Логування і моніторинг == Логування має змогу використовуватися для:
На основі логів можна відстежувати:
Логування помилок
- повідомлення про запуск процесу;
- помилки виконання;
- stack trace;
- параметри функцій;
- технічні ідентифікатори;
- час виконання;
- службові повідомлення.;
Логування і продуктивність
Логування дій користувачів має змогу фіксувати:
Поганий приклад:<syntaxhighlight lang="text">
- початок важливої операції;
- успішне завершення важливої операції;
- помилки та винятки;
- нестандартні ситуації;
- ідентифікатори документів;
- ідентифікатори користувачів або процесів;
- ключові параметри;
- статуси інтеграцій;
- час виконання складних операцій;
- причини відмови у виконанні дії;
- зміни критично важливих даних.;
це бізнес-процес запису службової інформації про роботу програми, модуля, користувача або системного процесу виступає ключовою рисою аналізу помилок забезпечується через {{SEO
- частоту помилок;
- критичні збої;
- повільні операції;
- проблеми інтеграцій;
- підозрілі дії;
- нестандартну поведінку користувачів;
- повторювані помилки;
- стабільність регламентних задач.;