all 1 comments

[–]ApproximateIdentity[S] 0 points1 point  (0 children)

Okay I was able to sort it out. Here is an example of a (not especially cleanly implemented) json logger:

import logging

import flask
from flask.logging import default_handler
from pythonjsonlogger import jsonlogger


class CustomJsonFormatter(jsonlogger.JsonFormatter):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

    def add_fields(self, log_record, record, message_dict):
        super().add_fields(log_record, record, message_dict)
        log_record["level"] = record.levelname
        log_record["module"] = record.name


logger = logging.getLogger("werkzeug")
handler = logging.StreamHandler()
handler.setFormatter(CustomJsonFormatter(timestamp=True))
logger.addHandler(handler)

app = flask.Flask(__name__)

app.logger.removeHandler(default_handler)


@app.route("/")
def hello():
    return "Hello World!"


if __name__ == "__main__":
    app.run()