Skip to main content

Google Cloud Log Formatter for Flask

Project description

flask_google_cloud_logger

CircleCI PyPI version Maintainability Test Coverage

Flask extension to format logs according to Google Cloud v2 Specification

Python log formatter for Google Cloud according to v2 specification using python-json-logger formatter

Inspired by Elixir's logger_json

Instalation

Pipenv

    pipenv install flask_google_cloud_logger 

Pip

    pip install flask_google_cloud_logger 

Usage

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 #log request and response info after extension's callbacks
def log_request_time(_exception):
    logger.info(
        f"{request.method} {request.path} - Sent {g.response.status_code}" +
        " in {g.request_time:.5f}ms")

Example output:

{"timestamp": "2018-11-04T22:07:42.687000Z", "severity": "INFO", "message": "GET / - Sent 200 in {g.request_time:.5f}ms", "labels": {"type": "python-application", "application_name": "Example Application", "client": {"user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36", "ip": "127.0.0.1", "version": null}, "connection": {"method": "GET", "path": "/", "request_id": "afc4c6d5-5f30-4f02-b66a-e97e87841073", "status": 200}, "latency": 0.13828277587890625}, "metadata": {"userLabels": {}}, "sourceLocation": {"file": "test_app.py", "line": 52, "function": "log_request_time"}}

Credits

Thanks @thulio, @robsonpeixoto, @ramondelemos

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flask_google_cloud_logger-0.2.1.tar.gz (4.3 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file flask_google_cloud_logger-0.2.1.tar.gz.

File metadata

  • Download URL: flask_google_cloud_logger-0.2.1.tar.gz
  • Upload date:
  • Size: 4.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.29.0 CPython/3.7.1

File hashes

Hashes for flask_google_cloud_logger-0.2.1.tar.gz
Algorithm Hash digest
SHA256 cc97442c1efb7b5f569289bcb542a8a7aecb20fc3f9b7c31a7f7fa0845089dcb
MD5 87431de8b0f13ca1c45d23253f9e2a0e
BLAKE2b-256 572a2e47d97abda2297cd0bff8f96a7aa52f79b05de7b82800abde4f5249be8b

See more details on using hashes here.

File details

Details for the file flask_google_cloud_logger-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: flask_google_cloud_logger-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 6.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.29.0 CPython/3.7.1

File hashes

Hashes for flask_google_cloud_logger-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3d017df6a2f936c099ecb9f23c7843bdd109542c5dd55095211cb2ec963e48ed
MD5 0ef84501f94cf6a65cf265220349b9e1
BLAKE2b-256 edabab2f06d5e3cb328dacb127117f6646b3768b16110eb9a5b8cb530c828475

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page