Оглавление:
Карта сайта:
Оглавление:
Карта сайта:
Создадим фильтр, для определения при вызове каких методов делать вывод в консоль.
В случае если метод filter вернет True, сообщение будет выведено в консоль.
filter.py
import logging class NewFunctionFilter(logging.Filter): def filter(self, record): # print(dir(record)) print(record.new_name) return record.funcName == 'new_function'
Подключаем фильтр в конфигурационный файл настроек логгера:
settings.py
from lesson4.filter import NewFunctionFilter 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', 'filters': ['new_filter'] } }, 'loggers': { 'app_logger': { 'level': 'DEBUG', 'handlers': ['console'] #'propagate': False } }, 'filters': { 'new_filter': { '()': NewFunctionFilter } }, # 'root': {} # '': {} # 'incremental': True }
Подключаем конфиг логгера и делаем вызов в двух методах: new_function(), main(). Вывод будет только при вызове new_function().
main.py
import logging.config from lesson4.settings import logger_config logging.config.dictConfig(logger_config) logger = logging.getLogger('app_logger') def new_function(): name = 'oleg' logger.debug('Enter in to the new_function()', extra={'new_name': name}) def main(): name = 'pumpurum' # Этот вывод будет отфильтрован logger.debug('Enter in to the main()', extra={'new_name': name}) if __name__ == '__main__': new_function() main()
Вывод в консоль:
2020-04-02 21:42:52,147 - DEBUG - app_logger - Enter in to the new_function() oleg pumpurum