Пока он работает хорошо.
Я пытался использовать файл access.log для записывать только запросы клиентов.
Кроме того, мне пришлось соответствовать формату журналирования, определенному GoAccess, для анализа трафика.
logging.basicConfig(filename='access.log', level=logging.INFO,
format='%(message)s')
@app.middleware("http")
async def log_requests(request: Request, call_next):
start_time = datetime.now()
response = await call_next(request)
process_time = (datetime.now() - start_time).total_seconds()
log = f'{request.client.host} - - [{start_time.strftime("%d/%b/%Y:%H:%M:%S %z")}] "{request.method} {request.url.path} HTTP/{request.scope["http_version"]}" {response.status_code} {response.headers.get("content-length", "-")} "{request.headers.get("referer", "-")}" "{request.headers.get("user-agent", "-")}"'
logging.info(log)
return response
Но когда инициируются внутренние запросы к другим третьим лицам, они также записываются следующим образом:
127.0.0.1 - - [03/Dec/2024:19:28:49 ] "GET /traffic-report HTTP/1.1" 200 710424 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
HTTP Request: POST http://to_other_service/hook/token/equity "HTTP/1.1 200 OK"
Я инициировал внутренние запросы с помощью пакета Httpx.
Сообщите мне, почему они записываются автоматически и как это исправить.
Спасибо. вам очень много.
Я пытался найти какие-либо фрагменты кода, которые были добавлены в запись access.log, но не нашел их.
Ожидаемый результат должен быть таким: это:
- Только запросы от клиентов должны записываться в файл access.log.
- Любые запросы, инициированные на самом сервере, не должны записываться автоматически.
127.0.0.1 - - [03/Dec/2024:19:28:49 ] "GET /traffic-report HTTP/1.1" 200 710424 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
Подробнее здесь: https://stackoverflow.com/questions/793 ... in-fastapi
Мобильная версия