Ответ 1
Короткий ответ
Вам не нужно настраивать его для своего приложения. Полезно это сделать.
Длинный ответ
Модуль logging - это модуль python, который позволяет любому коду python записывать информацию таким образом, чтобы она была неактуальной для используемого приложения. Библиотеки на любой глубине могут импортировать модуль протоколирования, информацию о журнале, предупреждения, ошибки и т.д. И не знать, как именно пользователь получит их.
То, что вы видите, касается отсутствия обработчика в вашем собственном приложении. ZODB, очевидно, регистрирует информацию, но поскольку вы не определили обработчик, эта информация о регистрации просто испаряется в эфир. Он уведомляет вас о том, что если вы хотите просмотреть некоторую информацию о регистрации, вы должны определить обработчик
Из журнальной книги:
import logging
# create logger with 'spam_application'
logger = logging.getLogger('spam_application')
logger.setLevel(logging.DEBUG)
# create file handler which logs even debug messages
fh = logging.FileHandler('spam.log')
fh.setLevel(logging.DEBUG)
# create console handler with a higher log level
ch = logging.StreamHandler()
ch.setLevel(logging.ERROR)
# create formatter and add it to the handlers
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
ch.setFormatter(formatter)
# add the handlers to the logger
logger.addHandler(fh)
logger.addHandler(ch)
В этом примере создается регистратор с именем для вашего приложения. Затем он создает два типа обработчиков. Один из них - обработчик файлов для записи журналов уровня DEBUG в файл. Второй - обработчик потока, который отправит ошибки на консоль.
Если вы хотите увидеть более подробную информацию на консоли, вы можете изменить уровень журнала на INFO:
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
Также обратите внимание на концепцию "formatters". Вы можете установить разные форматы журналов для разных обработчиков.
Если вы хотя бы создаете обработчик потока в своем приложении, он больше не будет предупреждать вас о том, что обработчик не определен.
Для python 2.7+ модуль logging
включает NullHandler
. Он предназначен для использования в библиотеке (например, в вашей библиотеке базы данных) как обработчик по умолчанию, который замалчивает ошибки, когда конечный пользователь использует библиотеку без каких-либо обработчиков ведения журнала (как вы это делали). Поэтому, если вы вообще не заботитесь о регистрации и просто хотите ее отключить, вы можете добавить NullHandler
в свой собственный код. Рекомендуется фактически настроить ведение журнала, но это всего лишь другие варианты:
Добавление NullHandler к журналу
import logging
logging.getLogger('spam_application').addHandler(logging.NullHandler())