Skip to main content

Documentation


from flask import Flask
import logging
import time
import threading
import random
from pythonjsonlogger import jsonlogger

app = Flask(__name__)

# Set up JSON logging
logger = logging.getLogger()
logHandler = logging.StreamHandler()
formatter = jsonlogger.JsonFormatter('%(asctime)s %(levelname)s %(message)s %(module)s')
logHandler.setFormatter(formatter)
logger.addHandler(logHandler)
logger.setLevel(logging.INFO)

# Background thread to emit logs
def emit_logs_forever():
    log_messages = [
        "User login",
        "Payment success",
        "Payment failed",
        "Order created",
        "Cache cleared",
        "Cache miss",
        "API call",
        "DB insert",
        "DB read",
        "Queue pushed",
        "Queue popped",
        "Heartbeat check",
        "Auth token issued",
        "Rate limit check",
        "Email sent",
        "SMS sent",
        "Webhook delivered",
        "Session expired",
        "Feature flag evaluated",
        "Metrics recorded"
    ]

    while True:
        logs_this_second = random.randint(19, 20)
        for _ in range(logs_this_second):
            msg = random.choice(log_messages)
            logger.info(msg, extra={"service": "demo-flask", "log_type": "auto"})
        time.sleep(0.2)


@app.route('/')
def index():
    logger.info("Root endpoint hit", extra={"service": "demo-flask"})
    return "Hello from demo Flask app!"

@app.route('/logs')
def logs():
    logger.info("Structured log emitted", extra={"service": "demo-flask"})
    return "Log emitted"

if __name__ == '__main__':
    # Start background thread for auto logs
    log_thread = threading.Thread(target=emit_logs_forever, daemon=True)
    log_thread.start()

    app.run(host='0.0.0.0', port=8080)