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