Я ленив и хочу, чтобы избежать этой строки в каждом файле питон, который использует протоколирование:Избегайте `логгер = logging.getLogger (__ имя __)`, не теряя способ фильтрации бревна
logger = logging.getLogger(__name__)
В январе я спросил, как это может быть сделано, и нашел ответ: Avoid `logger=logging.getLogger(__name__)`
К сожалению, ответ имеет недостаток, что вы теряете способность фильтровать.
Я действительно хочу избежать этой бесполезной и избыточной линии.
Пример:
import logging
def my_method(foo):
logging.info()
К сожалению, я думаю, что это невозможно сделать logger = logging.getLogger(__name__)
неявно, если logging.info()
вызывается в первый раз в этом файле.
Есть ли кто-нибудь, кто знает, как сделать невозможный материал?
Update
Мне нравится Don't Repeat Yourself. Если большинство файлов содержат одну и ту же строку вверху, я думаю, что это повторение. Это выглядит как WET. Переводчик python в моей голове должен пропустить эту строку каждый раз, когда я там смотрю. Мое субъективное чувство: эта линия бесполезна. Строка должна быть неявным значением по умолчанию.
Действительно ли это, что трудно * определить, что * одна строка * в верхней части вашего модуля? Вам уже пришлось вводить 'import logging'. –
@MartijnPieters Я не печатаю «журнал импорта». У меня есть IDE, которая делает это. Я набираю «logging. [MAGIC-KEY-STROKE]» в методе, а среда IDE вставляет оператор импорта вверху. Да, я не хочу набирать эту строку. Это раздувается. Я хочу меньше кода, а не больше. – guettli
Это не раздувание; это явное объявление о том, что вы хотите, чтобы объект журнала с этим именем. В пакете вы можете повторно использовать этот логгер для всех подмодулей, если вам не нравится это имя. Вы можете легко использовать различную иерархию имен. Более того, для чего-либо еще потребуется специальный подкласс класса с пользовательским '__getattr__', который затем проверяет фрейм вызовов для ключа' __name__' в глобалях для создания одного и того же объекта. Python предпочитает быть явным из-за такой магии. –