Логируй так, будто завтра сервер упадет, и только твои записи спасут мир. Рассмотрим, как создать логгер для проекта, который предусматривает вывод сообщений и в консоль, и в файл журнала. Реализовывать его будем в форме класса Python, но сначала рассмотрим типичные особенности в интерактивном режиме. Нашими строительными блоками будут составляющие модуля logging: Про уровни вывода сообщений и методы я рассказывал ранее. Создадим тестовый logger: Можно заметить 2 сообщения в консоли и одно - в журнале. Почему в консоль отправлен лишний вывод? Поведение по умолчанию предполагает передачу сообщений вверх по иерархии к root-логгеру, который является предком всех logger-ов и обрабатывает сообщение путем вывода на консоль. Это регулируется атрибутом propagate (который по умолчанию равен True). Соответственно, чтобы остановить передачу "наверх" надо задать: logger.propagate = False: Для вывода списка обработчиков, которые отвечают за отправку сообщений в канал, можно обратиться к свойству lo