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