Я написал кучу скриптов в течение долгого времени, и я нахожусь в процессе переделки скриптов, чтобы сохранить код DRY. В настоящее время я использую что-то подобное в различных скриптах:
if __name__ == '__main__':
logger = logging.getLogger('dbinit')
hdlr = logging.FileHandler('/var/logs/tmp/foo.log')
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr)
logger.setLevel(logging.WARNING)
Вместо того, чтобы повторять это в каждом скрипте (т.е.«модуль»), я хотел бы, чтобы эта инициализация регистратора была выполнена где-то и доступна для различных сценариев (хм, может быть, обернуть в одноэлементный класс?).
Если я не могу этого сделать (т.е. поместить код инициализации регистратора в один модуль ядра), я предполагаю, что при использовании того же имени файла журнала в вызове logging.FileHandler()различные скрипты будут писать в один и тот же файл.
Верно ли это предположение?
И последнее, но не менее важное: каков наилучший (например, Pythonic) способ решения этой проблемы?