Python logging example

Пример хорошего решения для меня при использовании системной библиотеки logging. Для каждого модуля можно создавать свой логгер

import logging
import os

# Путь к файлу в котором хранится лог сообщений
logFileName = './log/log.log'


# Формат сообщения 
# Пример: [07.03.2023 21:55:01] - main_process - DEBUG    This is a debug message
format = '[%(asctime)s] - %(name)s - %(levelname)-8s %(message)s'
# Базовая конфигурация Ограничение уровня логирования
# формат даты сообщения
# имя файла для лога
# сообщения добавляются в файл
logging.basicConfig(level=logging.DEBUG,
                    format=format,
                    datefmt='%m.%d.%Y %H:%M:%S',
                    filename=logFileName,
                    filemode='a')

# Обработчик для трансляции в консоль
consoleHandler = logging.StreamHandler()
# Ограничение уровня логирования
consoleHandler.setLevel(logging.INFO)
formatter = logging.Formatter(format)
# Формат сообщения
consoleHandler.setFormatter(formatter)
# Добавление обработчика для трансляции в консоль в базовый (root) логер
logging.getLogger('').addHandler(consoleHandler)

# Создание именованного экземпляра логера для текущего модуля
logger = logging.getLogger('main_process')

logger.debug('This is a debug message') #DEBUG тип сообщения не будет отображаться если базовая настройка уровня логирования выше чем DEBUG 
logger.warning('This is a warning message')#WARNING тип сообщения не будет отображаться если базовая настройка уровня логирования выше чем WARNING 

Что выводится в консоль:

[07.03.2023 22:34:31] - main_process - DEBUG    This is a debug message
[07.03.2023 22:34:31] - main_process - WARNING  This is a warning message

Далее код создания отдельного именованного логгера для любого модуля

import logging

# Создание именованного экземпляра логера для текущего модуля
module_logger = logging.getLogger('spam_service.spam')
# Используем экземпляр  логгера в функции
def some_function():
    module_logger.info('received a call to "some_function"')

Что выводится в консоль (при вызове функции some_function):

[07.03.2023 22:34:31] - spam_service.spam - INFO received a call to "some_function"