Использование может использовать шаблон проектирования Singleton для этого:
43 класс Singleton (тип):
44 "" "
45 Определите операцию экземпляра, которая позволяет клиентам получать доступ к ее уникальному
46 экземпляр.
47 "" "
48
49 def init (cls, name, base, attrs, ** kwargs):
50 супер (). init (имя, основания, атрибуты)
51 cls._instance = нет
52
53 def вызов (cls, * args, ** kwargs):
54, если cls._instance - None:
55 cls._instance = super (). call (* args, ** kwargs)
56 возврат cls._instance
57
58
59
60 def _setup_logger (name, log_file, level = logging.INFO):
61 "" "Функция устанавливает столько регистраторов, сколько вы хотите" ""
62
63 обработчик = logging.FileHandler (log_file)
64 handler.setFormatter (форматтер)
65 logger = logging.getLogger (имя)
66 logger.setLevel (уровень)
67 logger.addHandler (обработчик)
68
69 возврат логгера
70
Регистратор 71 класса (метакласс = Singleton):
72
73 def init (self, file_name, level):
74 если нет (isinstance (имя_файла, str) и
75 isinstance (level, int)):
76 повысить ValueError («Неверные аргументы»)
77
78 self.log_inf = _setup_logger ('inf', имя_файла + '. Inf', уровень)
79 self.log_err = _setup_logger ('err', имя_файла + '. Err', уровень)