У меня есть следующие требования:
- Чтобы иметь один глобальный регистратор, который вы можете настроить (уровень установки, дополнительные обработчики, ..)
- Чтобы иметь на модуле регистратор, который вы можете можно настроить (уровень установки, дополнительные обработчики, ..)
Другими словами, нам нужно больше журналов с другой конфигурацией
Поэтому я сделал следующее
- создать метод для настройки регистратора:
def setup_logger(module_name=None, level=logging.INFO, add_stdout_logger=True):
print("Clear all loggers")
for _handler in logging.root.handlers:
logging.root.removeHandler(_handler)
if add_stdout_logger:
print("Add stdout logger")
stdout_handler = logging.StreamHandler(sys.stdout)
stdout_handler.setLevel(level)
stdout_handler.setFormatter(logging.Formatter(fmt='%(asctime)-11s [%(levelname)s] [%(name)s] %(message)s'))
logging.root.addHandler(stdout_handler)
print("Set root level log")
logging.root.setLevel(level)
if module_name:
return logging.getLogger(module_name)
else:
return logging.getLogger('global')
Затем я создаю регистратор следующим образом:
logger_global = setup_logger(level=logging.DEBUG)
logger_module_1 = setup_logger(module_name='module1', level=logging.INFO)
logger_module_2 = setup_logger(module_name='module2', level=logging.DEBUG)
logger_global.debug("This is global log and will be visible because it is setup to DEBUG log")
logger_module_1.debug("This is logger_module_1 log and will NOT be visible because it is setup to INFO log")
logger_module_2.debug("This is logger_module_2 log and will be visible because it is setup to DEBUG log")
Прежде чем я попробую, что работает, а что нет, и проверию его более глубоко, я хотите спросить вас, является ли это хорошей практикой для этого или у вас есть какие-либо другие рекомендации по выполнению наших требований?
Спасибо за помощь