{ "info": { "author": "Raissa Ferreira", "author_email": "rai200890@gmail.com", "bugtrack_url": null, "classifiers": [ "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 3 :: Only", "Topic :: System :: Logging" ], "description": "# flask_google_cloud_logger\n[![CircleCI](https://circleci.com/gh/rai200890/flask_google_cloud_logger.svg?style=svg&circle-token=3b2eb197f30dc714a6ba81167ddcf4e10a8c92a6)](https://circleci.com/gh/rai200890/flask_google_cloud_logger)\n[![PyPI version](https://badge.fury.io/py/flask-google-cloud-logger.svg)](https://badge.fury.io/py/flask-google-cloud-logger)\n[![Maintainability](https://api.codeclimate.com/v1/badges/937c9f897f2cf89b9918/maintainability)](https://codeclimate.com/github/rai200890/flask_google_cloud_logger/maintainability)\n[![Test Coverage](https://api.codeclimate.com/v1/badges/937c9f897f2cf89b9918/test_coverage)](https://codeclimate.com/github/rai200890/flask_google_cloud_logger/test_coverage)\n\nFlask extension to format logs according to Google Cloud v2 Specification\n\nPython log formatter for Google Cloud according to [v2 specification](https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry) using [python-json-logger](https://github.com/madzak/python-json-logger) formatter\n\nInspired by Elixir's [logger_json](https://github.com/Nebo15/logger_json) \n\n## Instalation\n\n### Pipenv\n\n```\n pipenv install flask_google_cloud_logger \n```\n\n### Pip\n\n```\n pip install flask_google_cloud_logger \n```\n\n## Usage\n\n```python\nimport logging\nfrom logging import config\n\nfrom flask import Flask, request, g\nfrom flask_google_cloud_logger import FlaskGoogleCloudLogger\n\nLOG_CONFIG = {\n \"version\": 1,\n \"formatters\": {\n \"json\": {\n \"()\": \"flask_google_cloud_logger.FlaskGoogleCloudFormatter\",\n \"application_info\": {\n \"type\": \"python-application\",\n \"application_name\": \"Example Application\"\n },\n \"format\": \"[%(asctime)s] %(levelname)s in %(module)s: %(message)s\"\n }\n },\n \"handlers\": {\n \"json\": {\n \"class\": \"logging.StreamHandler\",\n \"formatter\": \"json\"\n }\n },\n \"loggers\": {\n \"root\": {\n \"level\": \"INFO\",\n \"handlers\": [\"json\"]\n },\n \"werkzeug\": {\n \"level\": \"WARN\", # Disable werkzeug hardcoded logger\n \"handlers\": [\"json\"]\n }\n }\n}\n\nconfig.dictConfig(LOG_CONFIG) # load log config from dict\nlogger = logging.getLogger(\"root\") # get root logger instance\napp = Flask(\"test_app\")\nFlaskGoogleCloudLogger(app)\n\n\n@app.route(\"/\")\ndef hello_world():\n return \"Hello, World!\"\n\n\n@app.teardown_request #log request and response info after extension's callbacks\ndef log_request_time(_exception):\n logger.info(\n f\"{request.method} {request.path} - Sent {g.response.status_code}\" +\n \" in {g.request_time:.5f}ms\")\n\n```\n\nExample output:\n\n```json\n{\"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\"}}\n```\n\n## Credits\n\nThanks [@thulio](https://github.com/thulio), [@robsonpeixoto](https://github.com/robsonpeixoto), [@ramondelemos](https://github.com/ramondelemos)\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/rai200890/flask_google_cloud_logger", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "flask-google-cloud-logger", "package_url": "https://pypi.org/project/flask-google-cloud-logger/", "platform": "", "project_url": "https://pypi.org/project/flask-google-cloud-logger/", "project_urls": { "Homepage": "http://github.com/rai200890/flask_google_cloud_logger" }, "release_url": "https://pypi.org/project/flask-google-cloud-logger/0.2.1/", "requires_dist": [ "google-cloud-logger (>=0.2.1)", "flask (>=1.0)" ], "requires_python": "", "summary": "Google Cloud Log Formatter for Flask", "version": "0.2.1" }, "last_serial": 4678751, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "ff65ca13849cba7c0b1e0eee00a1067e", "sha256": "e09d93b2a24d264f69ea682e440cd15577a65ff5b14b8d9f4793d40efb528d25" }, "downloads": -1, "filename": "flask_google_cloud_logger-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ff65ca13849cba7c0b1e0eee00a1067e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2880, "upload_time": "2018-10-29T02:48:33", "url": "https://files.pythonhosted.org/packages/79/15/8b228b2f439100650f634946e41d5136e294d266ff22922447b6c3a3b4e0/flask_google_cloud_logger-0.0.1-py3-none-any.whl" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "404824c5029555f76a3d24fa2e8a717b", "sha256": "fb98b9e2cd3c412c9319c88186f9f7ad07acb2966d5540ffe3cc72b65466441d" }, "downloads": -1, "filename": "flask_google_cloud_logger-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "404824c5029555f76a3d24fa2e8a717b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2884, "upload_time": "2018-10-29T03:52:03", "url": "https://files.pythonhosted.org/packages/71/df/c760ecb5686a38b41a07db6d6e17e6c8541822c4a134f5d03c8d2c5bea29/flask_google_cloud_logger-0.0.2-py3-none-any.whl" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "a35fe9718e272b14ac9281dcdd101f37", "sha256": "06054b51ce153429bfef9ec7825c2b9fb202d2761bc375d20e9b508550cb426b" }, "downloads": -1, "filename": "flask_google_cloud_logger-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "a35fe9718e272b14ac9281dcdd101f37", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2902, "upload_time": "2018-11-04T23:44:58", "url": "https://files.pythonhosted.org/packages/e2/92/81725073286d76bd28ddb893190a93ea940e84f1a6f013ad314ed537cc4a/flask_google_cloud_logger-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f9ad1a136ef962d290443a113b5d521c", "sha256": "d43886fdf456ab860fd7123cc2b53c6511ea3fa9228dbd5c80cbf03ddf995a17" }, "downloads": -1, "filename": "flask_google_cloud_logger-0.1.0.tar.gz", "has_sig": false, "md5_digest": "f9ad1a136ef962d290443a113b5d521c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3663, "upload_time": "2018-11-04T23:44:59", "url": "https://files.pythonhosted.org/packages/19/c6/fd8050138017f0d58e74ef20241e2b7cec5034d27ca3715f34d3e6a3bd7f/flask_google_cloud_logger-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "5fdb067072e24e03bfbaff564c57119e", "sha256": "e0de47384d66a57c07f6410785afe3fdc00384baa839363cd75611863c43be3c" }, "downloads": -1, "filename": "flask_google_cloud_logger-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "5fdb067072e24e03bfbaff564c57119e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2943, "upload_time": "2018-11-05T00:31:34", "url": "https://files.pythonhosted.org/packages/e3/b1/19dd223a364786cd85aab49c2c902ca3c649c8c4cae71ec5ad720839096a/flask_google_cloud_logger-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e77b051a7d7a0760e20c2b413fc00157", "sha256": "d1bc8ff3c3a9618e319d503d4645627bc818ddc1b39e84a071df66ecd4097bd9" }, "downloads": -1, "filename": "flask_google_cloud_logger-0.1.1.tar.gz", "has_sig": false, "md5_digest": "e77b051a7d7a0760e20c2b413fc00157", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3769, "upload_time": "2018-11-05T00:31:35", "url": "https://files.pythonhosted.org/packages/4a/75/e503053b0b1ce00763d19271a64759ac79e50a562ddb43bea061d32fa074/flask_google_cloud_logger-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "973ec394d90517ea3acf7a9b319a5a8e", "sha256": "fc69ceed377cce97614960c698e9ed12e447351136915d68808d6c639ffb4645" }, "downloads": -1, "filename": "flask_google_cloud_logger-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "973ec394d90517ea3acf7a9b319a5a8e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5968, "upload_time": "2018-11-20T18:19:39", "url": "https://files.pythonhosted.org/packages/e9/fb/f40ad7ec04ce834ee2eb92f442ad4cbe60ecb759f62ae6b45e4433357404/flask_google_cloud_logger-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1e69956793c66dbd05c1eff1b02ba391", "sha256": "41207ad5dd71360ec4c1220dedfa05359153ca597007fc3cde4e25533ef4ba91" }, "downloads": -1, "filename": "flask_google_cloud_logger-0.1.2.tar.gz", "has_sig": false, "md5_digest": "1e69956793c66dbd05c1eff1b02ba391", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4279, "upload_time": "2018-11-20T18:19:40", "url": "https://files.pythonhosted.org/packages/4c/d9/01911e9f76b7adc625a5bf889082ccb216ce565b6c93ed9f226bf30980cc/flask_google_cloud_logger-0.1.2.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "7daa72bfb8b611d59eb7fcacd0d83028", "sha256": "6a4ef774d386408f71638b371fc646dc023fba937302d5d8d98553abfa8d4a6e" }, "downloads": -1, "filename": "flask_google_cloud_logger-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "7daa72bfb8b611d59eb7fcacd0d83028", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5963, "upload_time": "2019-01-09T16:30:58", "url": "https://files.pythonhosted.org/packages/44/b3/1881a62f0ce2840bf29e5ecd899a825c0452e352760b246a4efff5bf8c44/flask_google_cloud_logger-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7c55df643bd371a32816208a711be172", "sha256": "f251c875f759bc38150da0536cd7882feef354d6a53acb2c942cdbd4150d5514" }, "downloads": -1, "filename": "flask_google_cloud_logger-0.2.0.tar.gz", "has_sig": false, "md5_digest": "7c55df643bd371a32816208a711be172", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4275, "upload_time": "2019-01-09T16:31:00", "url": "https://files.pythonhosted.org/packages/ea/e1/76b2351094ec2dc2ab146a6c715d73f24a8ebe5fa237f42e80a37077b5dc/flask_google_cloud_logger-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "0ef84501f94cf6a65cf265220349b9e1", "sha256": "3d017df6a2f936c099ecb9f23c7843bdd109542c5dd55095211cb2ec963e48ed" }, "downloads": -1, "filename": "flask_google_cloud_logger-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "0ef84501f94cf6a65cf265220349b9e1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5964, "upload_time": "2019-01-09T22:46:41", "url": "https://files.pythonhosted.org/packages/ed/ab/ab2f06d5e3cb328dacb127117f6646b3768b16110eb9a5b8cb530c828475/flask_google_cloud_logger-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "87431de8b0f13ca1c45d23253f9e2a0e", "sha256": "cc97442c1efb7b5f569289bcb542a8a7aecb20fc3f9b7c31a7f7fa0845089dcb" }, "downloads": -1, "filename": "flask_google_cloud_logger-0.2.1.tar.gz", "has_sig": false, "md5_digest": "87431de8b0f13ca1c45d23253f9e2a0e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4283, "upload_time": "2019-01-09T22:46:42", "url": "https://files.pythonhosted.org/packages/57/2a/2e47d97abda2297cd0bff8f96a7aa52f79b05de7b82800abde4f5249be8b/flask_google_cloud_logger-0.2.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0ef84501f94cf6a65cf265220349b9e1", "sha256": "3d017df6a2f936c099ecb9f23c7843bdd109542c5dd55095211cb2ec963e48ed" }, "downloads": -1, "filename": "flask_google_cloud_logger-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "0ef84501f94cf6a65cf265220349b9e1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5964, "upload_time": "2019-01-09T22:46:41", "url": "https://files.pythonhosted.org/packages/ed/ab/ab2f06d5e3cb328dacb127117f6646b3768b16110eb9a5b8cb530c828475/flask_google_cloud_logger-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "87431de8b0f13ca1c45d23253f9e2a0e", "sha256": "cc97442c1efb7b5f569289bcb542a8a7aecb20fc3f9b7c31a7f7fa0845089dcb" }, "downloads": -1, "filename": "flask_google_cloud_logger-0.2.1.tar.gz", "has_sig": false, "md5_digest": "87431de8b0f13ca1c45d23253f9e2a0e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4283, "upload_time": "2019-01-09T22:46:42", "url": "https://files.pythonhosted.org/packages/57/2a/2e47d97abda2297cd0bff8f96a7aa52f79b05de7b82800abde4f5249be8b/flask_google_cloud_logger-0.2.1.tar.gz" } ] }