Инструменты пользователя

Инструменты сайта


python:logger:custom_handler

Это старая версия документа!


Пользовательский обработчик

Создадим класс обработчик наших сообщений. В конструкторе передадим название файла куда будем писать сообщения. В методе emit: передаем сообщение, создаем на запись файл. После пишем в него полученное ранее сообщение
handler.py

import logging
 
class MegaHandler(logging.Handler):
    def __init__(self, filename):
        logging.Handler.__init__(self)
        self.filename = filename
 
    def emit(self, record):
        message = self.format(record)
        with open(self.filename, 'w') as file:
            file.write(message + '\n')

Конфигурационный файл настроек логгера. В нем необходимо указать созданный выше класс MegaHandler.
settings.py

from lesson5.handler import MegaHandler
 
 
logger_config = {
    'version': 1,
    'disable_existing_loggers': False,
 
    'formatters': {
        'std_format': {
            'format': '{asctime} - {levelname} - {name} - {message}',
            'style': '{'
        }
    },
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
            'level': 'DEBUG',
            'formatter': 'std_format'
        },
        'file': {
            '()': MegaHandler,
            'level': 'DEBUG',
            'filename': 'debug.log',
            'formatter': 'std_format'
        }
    },
    'loggers': {
        'app_logger': {
            'level': 'DEBUG',
            'handlers': ['console', 'file']
            #'propagate': False
        }
    },
 
    # 'filters': {},
    # 'root': {}   # '': {}
    # 'incremental': True
}

Подключаем и вызываем наш логгер.
main.py

import logging.config
 
from lesson5.settings import logger_config
 
 
logging.config.dictConfig(logger_config)
 
logger = logging.getLogger('app_logger')
 
 
 
def main():
    logger.debug('Enter in to the main()')
 
 
if __name__ == '__main__':
    main()

В файл debug.log будет сделана запись:

2020-04-02 22:10:01,063 - DEBUG - app_logger - Enter in to the main()
python/logger/custom_handler.1585854827.txt.gz · Последние изменения: 2023/01/12 12:16 (внешнее изменение)