Логгирование в fastapi
Как перегрузить стандартные логи фастапи? Стандартный мой лог выглядит так:
INFO: 127.0.0.1:53622 - "GET /api-key?access_token=1234567890qwertyuiop HTTP/1.1" 307 Temporary Redirect
INFO: 127.0.0.1:53622 - "GET /docs HTTP/1.1" 200 OK
INFO: 127.0.0.1:53622 - "GET /openapi.json HTTP/1.1" 200 OK
INFO: 127.0.0.1:53622 - "GET /docs HTTP/1.1" 200 OK
INFO: 127.0.0.1:53622 - "GET /openapi.json HTTP/1.1" 200 OK
А я бы хотел, чтобы там было как минимум тело запроса ещё. Можно воспользоваться logger. Но там максимум что я смогу сделать -- это добавить дату.
Ответы (1 шт):
Автор решения: hedgehogues
→ Ссылка
В отличие от uvicorn, под которым обычно запускается fastapi, в fastapi можно очень легко поменять формат вывода. Делает это удалением логгера fastapi и созданием нового, кастомного. На этот счёт существует две ссылки.
def make_logger(rotation_size, level):
logger.remove()
pid = os.getpid()
dt = datetime.datetime.now()
logger.add(
f'data/logs/fastapi-{dt}-{pid}.log',
rotation=rotation_size,
enqueue=True,
backtrace=True,
level=level,
format="{time} %s {level} {message}" % pid,
)
return logger.bind()