У меня есть API Flask с gunicorn.Gunicorn регистрирует все запросы к моему API, т.е.
172.17.0.1 - - [19/Sep/2018:13:50:58 +0000] "GET /api/v1/myview HTTP/1.1" 200 16 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"
Однако я хочу отфильтровать журналы, чтобы исключить определенную конечную точку, которая вызывается из какой-либо другой службы все несколько секунд.
Я написал фильтр для исключения этой конечной точки из журнала:
class NoReadyFilter(logging.Filter):
def filter(self, record):
return record.getMessage().find('/api/v1/ready') == -1
, и если я добавлю этот фильтр в регистратор werkzeug
и использую сервер разработки Flask, фильтр будет работать.Запросы на /api/v1/ready
не будут отображаться в файлах журнала.Однако я не могу добавить фильтр в логгер gunicorn
.Со следующим кодом все еще появляются запросы к /api/v1/ready
:
if __name__ != '__main__':
gunicorn_logger = logging.getLogger('gunicorn.glogging.Logger')
gunicorn_logger.setLevel(logging.INFO)
gunicorn_logger.addFilter(NoReadyFilter())
Как вы можете добавить фильтр в регистратор gunicorn?Я попытался добавить его к gunicorn.error
-логеру, как предлагалось здесь , но это не помогло.