examples/test_app.py
import logging
from logging import config
from flask import Flask, request, g
from flask_google_cloud_logger import FlaskGoogleCloudLogger
LOG_CONFIG = {
"version": 1,
"formatters": {
"json": {
"()": "flask_google_cloud_logger.FlaskGoogleCloudFormatter",
"application_info": {
"type": "python-application",
"application_name": "Example Application"
},
"format": "[%(asctime)s] %(levelname)s in %(module)s: %(message)s"
}
},
"handlers": {
"json": {
"class": "logging.StreamHandler",
"formatter": "json"
}
},
"loggers": {
"root": {
"level": "INFO",
"handlers": ["json"]
},
"werkzeug": {
"level": "WARN", # Disable werkzeug hardcoded logger
"handlers": ["json"]
}
}
}
config.dictConfig(LOG_CONFIG) # load log config from dict
logger = logging.getLogger("root") # get root logger instance
app = Flask("test_app")
FlaskGoogleCloudLogger(app)
@app.route("/")
def hello_world():
return "Hello, World!"
@app.teardown_request
def log_request_time(_exception):
logger.info(
f"{request.method} {request.path} - Sent {g.response.status_code}" +
" in {g.request_time:.5f}ms")