потомки Python Logger - преимущества - PullRequest
0 голосов
/ 06 сентября 2018

Мне трудно понять преимущества создания логеров потомков из моего корневого логгера в каждом модуле. Например:

В проекте под названием "foo", имя модуля называется "bar":

import logging
logger = logging.getLogger(__name__)
# other pieces of code, that all of them use log...

И тот же проект, но в модуле "Баз"

import logging
logger = logging.getLogger(__name__)
# other pieces of code, that all of them use log...

вместо того, чтобы просто создать один объект логгера и заставить другие модули импортировать и использовать его. Например, в том же проекте:

from foo.logs import logger
# other pieces of code, that all of them use log...

и foo / logs.py будет содержать что-то вроде:

import logging
logger = logging.getLoger('foo')
# some init logic of the logger...

Я могу получить все необходимые данные из созданного объекта LogRecord: имя файла, имя_функции, путь, имя и т. Д. *

Зачем повторять ту же процедуру создания логгера-потомка (вызывая getLogger), когда я его использую? это может также иметь незначительный след производительности нет?

1 Ответ

0 голосов
/ 06 сентября 2018

Причина создания отдельного регистратора для каждого файла заключается в том, что вы можете позже настроить то, что есть, а что нет, без изменения исходного кода.

Ведение журнала обычно настраивается с помощью внешнего файла, который может быть изменен после установки, даже пользователями, которые не являются разработчиками программного обеспечения.

По той же причине существуют разные уровни ведения журналов, которые можно использовать с каждым регистратором, чтобы можно было создавать больше или меньше журналов. Затем в какой-то момент, когда, например, Для целей отладки требуются исчерпывающие данные журнала из модуля a, файл конфигурации можно изменить, чтобы он отображал DEBUG уровень журнала для модуля a, не загромождая файл журнала информацией отладки из каждого модуля в приложении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...