Реалізація реєстратора - вже сингл.
Кілька викликів до logging.getLogger ('someLogger') повертають посилання на той самий об’єкт реєстратора. Це стосується не лише одного і того ж модуля, але і для всіх модулів, якщо це знаходиться в одному і тому ж процесі інтерпретації Python. Це справедливо для посилань на один і той же об'єкт; крім того, код програми може визначати та конфігурувати батьківський реєстратор в одному модулі та створювати (але не конфігурувати) дочірній реєстратор в окремому модулі, і всі виклики реєстратора до дитини передаватимуться до батьківського. Ось основний модуль
Джерело - Використання журналу в декількох модулях
Таким чином, ви повинні використовувати це -
Припустимо, ми створили та налаштували реєстратор під назвою 'main_logger' у головному модулі (який просто налаштовує реєстратор, нічого не повертає).
# get the logger instance
logger = logging.getLogger("main_logger")
# configuration follows
...
Тепер у підмодулі, якщо ми створимо дочірній реєстратор за ієрархією імен 'main_logger.sub_module_logger' , нам не потрібно налаштовувати його в підмодулі. Достатньо лише створення реєстратора за ієрархією імен.
# get the logger instance
logger = logging.getLogger("main_logger.sub_module_logger")
# no configuration needed
# it inherits the configuration from the parent logger
...
І він також не додасть обробник дублікатів.
Дивіться це запитання для більш детальної відповіді.