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.