Создадим класс обработчик наших сообщений. В конструкторе передадим название файла куда будем делать записи.
В методе 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()