← До фільтрів та технологій

← До списку лабораторних по Python

Python Лабораторна 26: Логування у форматі JSON

Технологія: Python

Номер лабораторної: 26 · Рівень: middle

Тема: Структуроване логування

Повний опис / сценарій лабораторної:

Meta: навчитися формувати логи у машинозчитуваному форматі.



Krok 1. Створити файл src/app/jsonlog26.py.

Komandi: cd ~/python_lab1/src; touch app/jsonlog26.py



Krok 2. Додати простий логер який друкує JSON рядки.

Komanda: printf "import json
import sys
from datetime import datetime

def log(level: str, message: str, **extra):
    record = {"ts": datetime.utcnow().isoformat(), "level": level, "msg": message}
    record.update(extra)
    sys.stdout.write(json.dumps(record) + "\n")

if __name__ == "__main__":
    log("info", "service start", service="lab26")
" > app/jsonlog26.py



Krok 3. Запустити модуль і подивитися JSON вивід.

Komанда: export PYTHONPATH=$(pwd); python app/jsonlog26.py



Krok 4. Додати функцію log error яка додає поле error.

Poyasnennya: для винятків зберігай тип і текст помилки.



Krok 5. Створити невеликий сценарій який викликає функцію і у випадку помилки логуватиме її як JSON.



Krok 6. Перенаправити вивід у файл і перевірити його вміст.

Komanda: python app/jsonlog26.py > lab26.log; head lab26.log



Krok 7. Продемонструвати як можна фільтрувати лог файл через jq або подібний інструмент.



Krok 8. Занотувати які поля корисно мати у кожному записі логів, наприклад trace id і user id.



Krok 9. Продумати схему інтеграції такого логера у більший застосунок.



Krok 10. Mini zvit.

Zavdannya: опиши чим структуровані логи кращі за довільний текст у контексті пошуку і аналітики.