← До списку лабораторних по Python
Повний опис / сценарій лабораторної:
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: опиши чим структуровані логи кращі за довільний текст у контексті пошуку і аналітики.