Правильное логирование Python 3 для новичков

Wood

Рано или поздно каждый программист приходит к вопросу — «Как черт побери настроить логирование в 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("Программа запустилась")

Что в итоге?

Логирование отличный инструмент который очень сильно упростит вам работу с отлавливанием ошибок в крупных (и не только) программах. Вам больше не нужно лезть в интерпретатор/консоль и смотреть, что пишет программа, просто открываем файл с логами и получаем всю нужную информацию.

comments powered by Disqus