Skip to content

Flask Integration ​

Basic Setup ​

python
from flask import Flask
from logly.integrations.flask import init_app

app = Flask(__name__)
init_app(app)

TIP

init_app adds request context (request_id, method, path) to all log messages during request handling, and routes Flask logs through Logly.

Manual Setup ​

python
import time
import uuid
from flask import Flask, g, request
from logly import logger
from logly.integrations.flask import LoglyHandler

app = Flask(__name__)


@app.before_request
def logly_before_request():
    g.logly_request_id = str(uuid.uuid4())
    g.logly_start = time.perf_counter()
    logger.contextualize(
        request_id=g.logly_request_id,
        method=request.method,
        path=request.path,
    )


@app.after_request
def logly_after_request(response):
    elapsed_ms = (time.perf_counter() - g.logly_start) * 1000
    logger.info(
        "{} {} {} {:.1f}ms",
        request.method,
        request.path,
        response.status_code,
        elapsed_ms,
    )
    return response


# Route Flask logs through Logly
app.logger.handlers = [LoglyHandler()]
app.logger.propagate = False

Request Context ​

python
@app.route("/users/<int:user_id>")
def get_user(user_id):
    logger.info("Fetching user {}", user_id)
    # Logs include: request_id, method, path from context
    return {"user_id": user_id}

Released under the MIT License.