Правильное логирование Python 3 для новичков
Рано или поздно каждый программист приходит к вопросу — «Как черт побери настроить логирование в Python?» Правильно настроенное логирование позволяет записывать в файл все процессы которые происходят с программой в процессе работы, будь то информационные промежуточные сообщение или ошибки в работе скрипта. Вам больше не нужно заходить в интерпретатор и смотреть, что же он там такого написал.
Благо пайтон имеет весьма хорошую библиотеку для этих целей, и имя этой библиотеки «logging» :) Что бы импортировать её, нужно подключить её в начале нашего скрипта:
import logging
Данная библиотека входит в стандартный набор модулей, и не потребует преждевременной установки.
Далее давайте настроим логирование Python 3:
logging.basicConfig(format='%(asctime)s - %(levelname)s - %(message)s',
level=logging.INFO,
filename='temp.log'
)
Данный код указывает логированию как правильно писать логирование.
- %(asctime)s
— Указываем, что первой строкой будет идти дата и время.
- %(levelname)s
— Затем, уровень ошибки, в нашем случае все сообщения INFO
- %(message)s
— И конечно же само сообщение
- filename
— Записываем имя файла с расширением .log в который будут писаться логи.
Теперь вы можете на любом отрезке кода (там где раньше у вас располагались print() указать такую строчку кода, которая будет записывать происходящее в файл, нежели замусоривать консоль:
logging.info(**Информационное сообщение**)
Например:
logging.info(User: %s, go to menu %s, user, menu)
Пример вывода:
2018-11-19 13:02:30,807 - INFO - User Admin go to menu 404
2018-11-19 13:02:53,147 - ERROR - No error handlers are registered, logging exception......
И так далее.
Данного кода (приведенный выше) хватает с головой для отлавливания всех проблем. Конечно, можно вывести в лог все что угодно, те же самые print’ы, только в нашем случае пишем logging.info()
Различные примеры использование логирования:
import logging
def add(x, y):
logging.info("Х=%s и У=%s В результате даст = %s" % (x, y, x+y))
return x+y
Или вот еще
import logging
if __name__ == '__main__':
logging.info("Программа запустилась")
Что в итоге?
Логирование отличный инструмент который очень сильно упростит вам работу с отлавливанием ошибок в крупных (и не только) программах. Вам больше не нужно лезть в интерпретатор/консоль и смотреть, что пишет программа, просто открываем файл с логами и получаем всю нужную информацию.