Перейти до вмісту

Логування

Матеріал з K2 ERP Wiki

У K2 ERP логи можуть допомагати аналізувати:

Інтеграційна практика: логування сприяє оперативно відрізнити помилку бізнес-логіки від помилки зовнішнього сервісу або каналу зв’язку.; До них належать:

  • факт відправлення запиту;
  • факт отримання відповіді;
  • статус інтеграції;
  • код помилки;
  • ідентифікатор операції;
  • час виконання;
  • результат обробки;
  • службові повідомлення зовнішнього сервісу.;

Якість лог-повідомлень

Для Wiki: сторінка про логування має бути пов’язана зі статтями про налагодження коду, модулі K2 ERP, Python, інтеграції, безпеку та підтримку системи.; Логування тісно пов’язане з налагодженням коду.; Не кожне повідомлення є собою помилкою, і не кожну службову деталь варто записувати як INFO.; * вхід у систему;

  • створення запису;
  • редагування документа;
  • зміну статусу;
  • погодження або відхилення;
  • видалення;
  • експорт даних;
  • зміну налаштувань;
  • зміну прав доступу;
  • запуск важливої операції.;== Логування в K2 ERP ==

Див.; додатково

Інтеграційні логи

Для модуля: логування має допомагати зрозуміти, як компонент функціонує у реальних бізнес-сценаріях.; * напрямок обміну;

  • час відправлення запиту;
  • час отримання відповіді;
  • статус операції;
  • ідентифікатор зовнішнього запиту;
  • код відповіді;
  • помилки формату;
  • помилки авторизації;
  • помилки мережі;
  • результат обробки відповіді.; Для помилки корисно фіксувати:
Корисний лог: це повідомлення, яке сприяє відповісти на питання: що сталося, коли, де, з якими даними і чому.;</syntaxhighlight>

Логування дій користувачів

  • що сталося;
  • у якому процесі;
  • з яким об’єктом;
  • який був результат;
  • важливий технічний контекст;
  • ідентифікатори для пошуку;
  • достатньо інформації для аналізу.; Не рекомендується логувати:

Основна ідея: логування надає можливість бачити історію роботи системи і швидше знаходити причини помилок або нестандартної поведінки.; logger.error("Помилка при створенні документа: %s", error) !Призначення

Під час налагодження програміст має змогу використовувати логи, щоб побачити:

Висновок

  • створення документів;
  • зміну статусів;
  • виконання погоджень;
  • запуск автоматичних процедур;
  • помилки Python-коду;
  • звернення до бази даних;
  • інтеграції із зовнішніми системами;
  • дії користувачів;
  • проблеми з правами доступу;
  • формування звітів;
  • виконання регламентних задач.; * збільшення розміру лог-файлів;
  • зайве навантаження на диск;
  • ускладнення пошуку потрібної інформації;
  • зниження продуктивності;
  • поява великої кількості шуму;
  • складність аналізу реальних помилок.; з цієї причини для підтримки стабільності істотно фіксувати ключові події.; Рекомендовано:

Під час впровадження логування часто допускаються типові помилки.; Для керування: логи дій користувачів допомагають встановити відповідальність і відновити послідовність подій у бізнес-процесі.; Для складних модулів варто документувати підхід до логування.; Вони можуть містити:

У ERP-системі істотно розуміти, які дії виконували користувачі.; Окремо варто відзначити що відбулося в системі, коли це сталося, хто виконав дію, які інформаційні дані були оброблені і чому могла виникнути помилка.; завдяки наявності Для розробника: логування користувачі можуть знайти причину проблеми навіть тоді, коли помилку складно повторити вручну.; Професійний підхід: логи мають бути достатньо детальними для аналізу, але достатньо чистими, щоб у них можна було оперативно знайти потрібну інформацію.; Кожен важливий компонент K2 ERP має містити логування критичних подій.;== Типи логів ==

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 ==

як ілюстрація:

Логування і налагодження коду

Для якісного логування варто дотримуватися кількох правил.; # умовна операційна дія

Призначення логування

ERP-система функціонує з документами, користувачами, ролями, правами доступу, фінансовими даними, довідниками, інтеграціями та бізнес-процесами.;
Логування потрібне для того, щоб платформа залишала зрозумілі технічні сліди своєї роботи.;

Баланс: неправильний рівень логування має змогу ускладнити аналіз.; Безпека: логи не повинні перетворюватися на місце зберігання конфіденційної інформації, паролів, токенів або зайвих персональних даних.; Логування не повинно суттєво уповільнювати роботу системи.; істотно контролювати:

Логування інтеграцій

У K2 ERP можуть використовуватися різні типи логів залежно від задачі.;

Типові помилки при логуванні

Помилка при створенні договору: відсутній контрагент, document_id=45821, user_id=17

У модулі доцільно логувати:

# бізнес-логіка створення документа

У логах доцільно фіксувати події, які мають значення для діагностики, аудиту або підтримки системи.; logger.info("Початок створення документа")

logger.info("Документ успішно створено")

Якісне лог-повідомлення має бути зрозумілим, конкретним і корисним.; Варто логувати:

Практична порада: якщо в логах є собою лише слово “помилка”, вони майже не допомагають.; Не всю інформацію потрібно записувати в логи.; Потрібен контекст.; Небезпека: погане логування створює ілюзію контролю, але не сприяє реально знайти причину проблеми.;
  • відсутність логів у важливих процесах;
  • занадто загальні повідомлення;
  • логування без контексту;
  • надмірна кількість debug-повідомлень;
  • запис конфіденційних даних;
  • відсутність ідентифікаторів документів;
  • різний стиль повідомлень у різних модулях;
  • відсутність рівнів логування;
  • ігнорування помилок інтеграції;
  • відсутність ротації або очищення логів;
  • зберігання логів без контролю доступу.; Інтеграційні логи фіксують обмін даними між K2 ERP та зовнішніми системами.; Помилка: логувати все підряд.;
Рівень
  • використовувати рівні логування;
  • писати зрозумілі повідомлення;
  • додавати технічний і бізнес-контекст;
  • не логувати секрети;
  • не перевантажувати логи зайвими повідомленнями;
  • логувати важливі бізнес-події;
  • фіксувати помилки зі stack trace;
  • використовувати єдиний стиль повідомлень;
  • додавати ідентифікатори об’єктів;
  • контролювати доступ до логів;
  • налаштовувати зберігання і очищення логів;
  • перевіряти логи під час тестування.;=== Технічні логи ===
Перевага: якісне логування надає можливість розробнику або адміністратору не здогадуватися, що сталося, а перевіряти факти.; Надмірна кількість логів має змогу бути майже такою ж проблемою, як і повна відсутність логування.;

Логи помилок

  • аналізувати помилки;
  • перевіряти виконання бізнес-логіки;
  • відстежувати дії користувачів;
  • контролювати роботу інтеграцій;
  • перевіряти вхідні та вихідні інформаційні дані;
  • аналізувати продуктивність;
  • знаходити причини збоїв;
  • перевіряти порядок виконання операцій;
  • підтримувати безпеку;
  • спрощувати налагодження коду;
  • формувати технічний аудит подій.; Воно сприяє аналізувати помилки, перевіряти виконання бізнес-процесів, контролювати інтеграції, відстежувати дії користувачів і підтримувати стабільність ERP-системи.; У K2 ERP логування застосовується; додатково реалізовано налагодження коду, контролю виконання бізнес-процесів, перевірки інтеграцій, аудиту дій користувачів і підтримки стабільної роботи ERP-системи.; Логи помилок використовуються для запису збоїв, винятків і некоректних ситуацій.; У Python логування зазвичай реалізується через спеціальні механізми запису повідомлень про роботу програми.; Практична ідея: у логах потрібно фіксувати не все підряд, а саме ті події, які допомагають зрозуміти роботу коду і знайти проблему.;=== Аудиторські логи ===
DEBUG Детальна технічна відомості для розробника Перевірка значень змінних, параметрів, проміжних результатів
INFO Звичайні інформаційні події Початок або успішне завершення операції
WARNING Попередження про потенційну проблему Відсутнє необов’язкове поле або нестандартна ситуація
ERROR Помилка, яка завадила виконати дію Неможливо створити документ або виконати інтеграцію
CRITICAL Критична помилка системного рівня Відмова важливого сервісу або неможливість роботи модуля

Рівні логування

У логуванні зазвичай використовуються різні рівні важливості повідомлень.; * запуск основної операції;

  • завершення операції;
  • помилки бізнес-логіки;
  • помилки доступу;
  • помилки інтеграції;
  • зміни статусів;
  • важливі автоматичні дії;
  • створення або актуалізація ключових документів;
  • нетипові ситуації;
  • винятки Python-коду.; * які події логуються;
  • де зберігаються логи;
  • які рівні логування використовуються;
  • які помилки вважаються критичними;
  • хто має доступ до логів;
  • як аналізувати типові помилки;
  • як перевіряти інтеграційні журнали;
  • як використовувати логи під час підтримки.; result = "document_created"
  • паролі;
  • токени доступу;
  • секретні ключі;
  • повні платіжні реквізити;
  • зайві персональні інформаційні дані;
  • великі обсяги даних без потреби;
  • випадкові службові повідомлення;
  • дублікати одного й того самого запису;
  • тимчасові debug-повідомлення після завершення налагодження;
  • інформаційні дані, які можуть порушувати правила безпеки або конфіденційності.;

Логування — це один із ключових інструментів для підтримки, налагодження та контролю роботи K2 ERP.;== Логування і моніторинг == Логування має змогу використовуватися для:

Головна думка: логування в K2 ERP — це не без ускладнень технічний запис подій, а інструмент прозорості, стабільності, безпеки і якісної підтримки ERP-системи.;

На основі логів можна відстежувати:

Логування помилок

  • повідомлення про запуск процесу;
  • помилки виконання;
  • stack trace;
  • параметри функцій;
  • технічні ідентифікатори;
  • час виконання;
  • службові повідомлення.;

Логування і продуктивність

Логування дій користувачів має змогу фіксувати:

Поганий приклад:<syntaxhighlight lang="text">

  • початок важливої операції;
  • успішне завершення важливої операції;
  • помилки та винятки;
  • нестандартні ситуації;
  • ідентифікатори документів;
  • ідентифікатори користувачів або процесів;
  • ключові параметри;
  • статуси інтеграцій;
  • час виконання складних операцій;
  • причини відмови у виконанні дії;
  • зміни критично важливих даних.;

це бізнес-процес запису службової інформації про роботу програми, модуля, користувача або системного процесу виступає ключовою рисою аналізу помилок забезпечується через {{SEO

Логування або журналювання.; За допомогою логів можна:

У K2 ERP логування є собою важливою частиною розробки, впровадження та підтримки системи.;
  • частоту помилок;
  • критичні збої;
  • повільні операції;
  • проблеми інтеграцій;
  • підозрілі дії;
  • нестандартну поведінку користувачів;
  • повторювані помилки;
  • стабільність регламентних задач.;