У меня есть пакет, в котором есть несколько компонентов, которые могли бы выиграть от использования ведения журнала и вывода полезной информации.
То, что я не хочу делать, это "настроить" правильное ведение журнала для каждого отдельного файла где-то вдоль этих строк:
import logging
logging.basicConfig(level=DEBUG)
my_function = logging.getLogger("my_function")
my_class = logging.getLogger("my_class")
Я пробовал несколько подходов, один из которых добавлял код шаблона в класс внутри модуля утилиты и пытался сделать что-то вроде этого:
from util import setlogging
set_logging()
Но даже указанное выше решение не выглядит чистым для меня и вызовет проблемы, потому что setLogger не имеет метода __call__
. Мне понравилось то, что мой класс "set_logging" читал бы форму конфигурационного файла и имел бы значения по умолчанию, поэтому неважно, какой уровень или какой тип формата ведения журнала я хотел бы правильно настроить.
Есть ли способ инициализировать правильное ведение журнала по всей доске в моем пакете? Может быть, в файле __init__.py
?
И чтобы быть как можно более подробным, это то, что setlogging (теперь функция, а не класс) выглядит следующим образом:
def setlogging(config=None):
if config == None:
config = config_options() # sets default values
levels = {
'debug': DEBUG,
'info': INFO
}
level = levels.get(config['log_level'])
log_format = config['log_format']
datefmt = config['log_datefmt']
basicConfig(
level = level,
format = log_format,
datefmt = datefmt)