=====Filter вывода=====
Создадим фильтр, для определения при вызове каких методов делать вывод в консоль.
В случае если метод 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