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

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

Python Лабораторна 4: Базова конфігурація logging у застосунку

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

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

Тема: Логування через logging

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

Meta: навчитися користуватися стандартним модулем logging замість print у прод коді.



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

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



Krok 2. Додати базову конфігурацію logging.

Komanda: printf "import logging

logging.basicConfig(level=logging.INFO, format="%(asctime)s %(levelname)s %(name)s %(message)s")
logger = logging.getLogger("lab4")

def run():
    logger.debug("debug message")
    logger.info("info message")
    logger.warning("warning message")
" > app/log_demo.py



Krok 3. Запустити функцію run з модуля.

Komanda: export PYTHONPATH=$(pwd); python -c "from app.log_demo import run; run()"

Poyasnennya: побачиш повідомлення починаючи з рівня INFO.



Krok 4. Змінити рівень логування на DEBUG.

Komanda: sed -i "s/level=logging.INFO/level=logging.DEBUG/" app/log_demo.py 2>/dev/null || echo "онови вручну"



Krok 5. Повторно запустити і порівняти вивід.

Komanda: python -c "from app.log_demo import run; run()"



Krok 6. Додати файл логів замість стандартного виводу.

Komanda: printf "import logging

logger = logging.getLogger("lab4file")
logger.setLevel(logging.INFO)
handler = logging.FileHandler("lab4.log")
formatter = logging.Formatter("%(asctime)s %(levelname)s %(message)s")
handler.setFormatter(formatter)
logger.addHandler(handler)

def run():
    logger.info("message to file")
" > app/log_to_file.py



Krok 7. Запустити log_to_file і перевірити файл.

Komandi: python -c "from app.log_to_file import run; run()"; cat lab4.log



Krok 8. Додати у main використання логера замість print.

Poyasnennya: рефакторинг основного застосунку на logging.



Krok 9. Занотувати різницю між logger per module та кореневим логером.



Krok 10. Mini zvit.

Zavdannya: опиши як ти налаштуєш логування для середовищ dev, stage, prod.