So implementieren Sie die Anforderungsprotokollierung und -überwachung in FastAPI

WBOY
Freigeben: 2023-07-30 08:29:39
Original
3964 Leute haben es durchsucht

So implementieren Sie die Anforderungsprotokollierung und -überwachung in FastAPI

Einführung:
FastAPI ist ein leistungsstarkes Web-Framework basierend auf Python 3.7+, das viele leistungsstarke Funktionen und Features bietet, einschließlich automatisierter Überprüfung des Anforderungs- und Antwortmodells, Sicherheit, Leistungsoptimierung, usw. In der tatsächlichen Entwicklung müssen wir häufig Anforderungsprotokolle in der Anwendung aufzeichnen, um Debugging- und Überwachungsanalysen durchzuführen. In diesem Artikel wird die Implementierung der Anforderungsprotokollierung und -überwachung in FastAPI vorgestellt und entsprechende Codebeispiele bereitgestellt.

1. Abhängigkeitspakete installieren
Bevor wir beginnen, müssen wir einige notwendige Abhängigkeitspakete installieren. Öffnen Sie das Terminal und führen Sie den folgenden Befehl aus:

pip install fastapi uvicorn loguru
Nach dem Login kopieren

Unter anderem ist loguru eine benutzerfreundliche Protokollierungsbibliothek, mit der wir Anforderungsprotokolle aufzeichnen.

2. Erstellen Sie eine FastAPI-Anwendung
Zuerst müssen wir eine FastAPI-Anwendung erstellen. Erstellen Sie im Projektverzeichnis eine Datei mit dem Namen main.py und schreiben Sie den folgenden Code:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
Nach dem Login kopieren

3. Anforderungsprotokolle aufzeichnen
Als Nächstes verwenden wir die Loguru-Bibliothek, um Anforderungsprotokolle aufzuzeichnen. Fügen Sie den folgenden Code zur Datei main.py hinzu:

from loguru import logger
import uvicorn
from fastapi import FastAPI

app = FastAPI()

@app.on_event("startup")
async def startup_event():
    logger.add("logs/request.log", rotation="10 MB")

@app.get("/")
async def root():
    logger.info("Hello World")
    return {"message": "Hello World"}

if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8000)
Nach dem Login kopieren

Im obigen Code importieren wir zunächst das Logger-Objekt der Loguru-Bibliothek und fügen einen Datei-Logger hinzu. Wir haben den Pfad der Protokolldatei als logs/request.log angegeben und die maximale Größe der Protokolldatei auf 10 MB festgelegt. Dann verwenden wir in der Funktion root() die Methode logger.info(), um die Anfrage zu protokollieren.

4. Starten Sie die Anwendung.
Speichern Sie die Datei main.py und kehren Sie zum Terminal zurück. Führen Sie den folgenden Befehl aus, um die FastAPI-Anwendung zu starten:

uvicorn main:app --reload
Nach dem Login kopieren

Das Terminal gibt die Zugriffs-URL der Anwendung aus, z. B. http:// 127.0.0.1:8000. Wenn wir im Browser auf diese URL zugreifen, wird die Meldung „Hello World“ angezeigt. Öffnen Sie die Datei logs/request.log und wir sehen die Anforderungsprotokolldatensätze.

5. Überwachung von Anfragen
Zusätzlich zur Aufzeichnung von Anfrageprotokollen können wir auch die Bearbeitungszeit und den Statuscode der Anfrage überwachen. Um diese Funktion zu implementieren, müssen wir die von FastAPI bereitgestellte Middleware verwenden. Fügen Sie den folgenden Code zur Datei main.py hinzu:

from loguru import logger
import time
import uvicorn
from fastapi import FastAPI, Request
from fastapi.middleware.cors import CORSMiddleware

app = FastAPI()

@app.on_event("startup")
async def startup_event():
    logger.add("logs/request.log", rotation="10 MB")

@app.on_event("shutdown")
async def shutdown_event():
    logger.remove(handler_id="request_logger")

@app.middleware("http")
async def log_request(request: Request, call_next):
    start_time = time.time()
    response = await call_next(request)
    process_time = time.time() - start_time

    logger.info(
        "Request: {method} {url} {status_code} {process_time:.2f}ms",
        method=request.method,
        url=request.url,
        status_code=response.status_code,
        process_time=process_time * 1000,
    )

    return response

@app.get("/")
async def root():
    logger.info("Hello World")
    return {"message": "Hello World"}

if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8000)
Nach dem Login kopieren

Im obigen Code importieren wir zunächst das Zeitmodul und fügen eine Ruhezeit in der Funktion root() hinzu, um die Bearbeitungszeit der Anfrage zu simulieren. Anschließend haben wir die Logik zum Berechnen der Anforderungsverarbeitungszeit und zum Aufzeichnen des Anforderungsstatuscodes in der Middleware-Funktion log_request() hinzugefügt. In der Funktion „shutdown_event()“ löschen wir den zuvor hinzugefügten Logger.

Jetzt starten Sie die FastAPI-Anwendung neu und rufen Sie die URL der Anwendung in Ihrem Browser auf. Aktualisieren Sie die Seite im Browser und öffnen Sie die Datei logs/request.log. Wir sehen die Anforderungsprotokolldatensätze einschließlich der Anforderungsmethode, der URL, des Statuscodes und der Verarbeitungszeit.

Fazit:
In diesem Artikel wird erläutert, wie Sie die Anforderungsprotokollierung und -überwachung in FastAPI implementieren. Wir verwenden die Loguru-Bibliothek zum Aufzeichnen von Anforderungsprotokollen und verwenden die Middleware von FastAPI, um die Verarbeitungszeit und den Statuscode der Anforderung zu überwachen. Diese Funktionen ermöglichen es uns, Bewerbungsanfragen und -antworten besser zu verfolgen und zu überwachen. Das Obige ist ein Codebeispiel zur Implementierung der Anforderungsprotokollierung und -überwachung.

Referenzmaterialien:

  • Offizielle Dokumentation von FastAPI: https://fastapi.tiangolo.com/
  • Offizielle Dokumentation von Loguru: https://loguru.readthedocs.io/

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Anforderungsprotokollierung und -überwachung in FastAPI. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage