{ "info": { "author": "Caleb Hattingh", "author_email": "caleb.hattingh@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: Apache Software License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": ".. image:: https://img.shields.io/badge/stdlib--only-yes-green.svg\n :target: https://img.shields.io/badge/stdlib--only-yes-green.svg\n\n.. image:: https://travis-ci.org/cjrh/logjson.svg?branch=master\n :target: https://travis-ci.org/cjrh/logjson\n\n.. image:: https://coveralls.io/repos/github/cjrh/logjson/badge.svg?branch=master\n :target: https://coveralls.io/github/cjrh/logjson?branch=master\n\n.. image:: https://img.shields.io/pypi/pyversions/logjson.svg\n :target: https://pypi.python.org/pypi/logjson\n\n.. image:: https://img.shields.io/github/tag/cjrh/logjson.svg\n :target: https://img.shields.io/github/tag/cjrh/logjson.svg\n\n.. image:: https://img.shields.io/badge/install-pip%20install%20logjson-ff69b4.svg\n :target: https://img.shields.io/badge/install-pip%20install%20logjson-ff69b4.svg\n\n.. image:: https://img.shields.io/pypi/v/logjson.svg\n :target: https://img.shields.io/pypi/v/logjson.svg\n\n.. image:: https://img.shields.io/badge/calver-YYYY.MM.MINOR-22bfda.svg\n :target: http://calver.org/\n\n\nlogjson\n======================\n\n**Goal**: easily generate structured JSON logging.\n`logstash `_ mode is optional.\n\n.. code-block:: python\n\n import logging\n import logjson\n logger = logging.getLogger('blah')\n\n handler = logging.StreamHandler()\n handler.setFormatter(\n logjson.JSONFormatter(pretty=True)\n )\n logger.addHandler(handler)\n\n logger.info('hi %s %s!', 'you', 'there')\n\nOutput:\n\n.. code-block:: json\n\n {\n \"name\": \"blah\",\n \"msg\": \"hi %s %s!\",\n \"args\": [\n \"you\",\n \"there\"\n ],\n \"levelname\": \"INFO\",\n \"levelno\": 20,\n \"pathname\": \"\",\n \"filename\": \"test_main.py\",\n \"module\": \"test_main\",\n \"exc_text\": null,\n \"stack_info\": null,\n \"lineno\": 17,\n \"funcName\": \"test_main\",\n \"created\": 1511750128.6285746,\n \"msecs\": 628.5746097564697,\n \"relativeCreated\": 23.08201789855957,\n \"thread\": 139929130264384,\n \"threadName\": \"MainThread\",\n \"processName\": \"MainProcess\",\n \"process\": 18460,\n \"message\": \"hi you there!\",\n \"created_iso\": \"2017-11-27T02:35:28.628575+00:00\"\n }\n\nLogstash mode is only one param away:\n\n.. code-block:: python\n\n logger = logging.getLogger('ls')\n handler = logging.StreamHandler()\n handler.setFormatter(\n logjson.JSONFormatter(pretty=True, logstash_mode=True)\n )\n logger.addHandler(handler)\n logger.info('logstash test')\n\nOutput:\n\n.. code-block:: json\n\n {\n \"@message\": \"logstash test\",\n \"@source_host\": \"localhost.localdomain\",\n \"@timestamp\": \"2017-11-27T02:35:28.631275+00:00\",\n \"@fields\": {\n \"name\": \"ls\",\n \"msg\": \"logstash test\",\n \"args\": [],\n \"levelname\": \"INFO\",\n \"levelno\": 20,\n \"pathname\": \"\",\n \"filename\": \"test_main.py\",\n \"module\": \"test_main\",\n \"exc_text\": null,\n \"stack_info\": null,\n \"lineno\": 42,\n \"funcName\": \"test_logstash\",\n \"created\": 1511750128.631275,\n \"msecs\": 631.274938583374,\n \"relativeCreated\": 25.782346725463867,\n \"thread\": 139929130264384,\n \"threadName\": \"MainThread\",\n \"processName\": \"MainProcess\",\n \"process\": 18460\n }\n }\n", "description_content_type": "text/x-rst", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/cjrh/logjson", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "logjson", "package_url": "https://pypi.org/project/logjson/", "platform": "", "project_url": "https://pypi.org/project/logjson/", "project_urls": { "Homepage": "https://github.com/cjrh/logjson" }, "release_url": "https://pypi.org/project/logjson/2018.5.1/", "requires_dist": [ "typing; python_version < '3.5'" ], "requires_python": "", "summary": "logjson", "version": "2018.5.1" }, "last_serial": 3883134, "releases": { "2017.11.2": [ { "comment_text": "", "digests": { "md5": "8b465c54051b773ff7e4b205b4884b35", "sha256": "1b0e82836462e31dfa9690d958ecab1014a57a60b2cf05107d08f560a55e719d" }, "downloads": -1, "filename": "logjson-2017.11.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8b465c54051b773ff7e4b205b4884b35", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15607, "upload_time": "2017-11-27T02:45:14", "url": "https://files.pythonhosted.org/packages/7c/b2/c691492ef8140585022e6fc172d05902e728a8094578ef795f537bcd7a8a/logjson-2017.11.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2178525f0384bd0c8de2d09b2ac5a3e3", "sha256": "288511f48fd9c094de26f67aa930fbacc559993bca15d694f73941f9bdfd4598" }, "downloads": -1, "filename": "logjson-2017.11.2.tar.gz", "has_sig": false, "md5_digest": "2178525f0384bd0c8de2d09b2ac5a3e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8472, "upload_time": "2017-11-27T02:45:17", "url": "https://files.pythonhosted.org/packages/75/30/e7b9da773ec891e9d3d887b82c93fe090e952600a1146532392801d67233/logjson-2017.11.2.tar.gz" } ], "2017.12.1": [ { "comment_text": "", "digests": { "md5": "fef84c6fe711966cac5a3277b0c4ab03", "sha256": "b36a047631dd3d33e10b7a21f08cbfcd5f84ca5e9ad100183fc261c434dd5c7d" }, "downloads": -1, "filename": "logjson-2017.12.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fef84c6fe711966cac5a3277b0c4ab03", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15586, "upload_time": "2017-12-05T10:49:32", "url": "https://files.pythonhosted.org/packages/61/af/9ede74f7aa342d6da9d71a9fc5b7a8c1c9d6ad849c8392b957ab7b929900/logjson-2017.12.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5aaa5d09567184a3cae07d8c74da8a96", "sha256": "d4987d7cc49c6509c0046408644f47b558530dc88cfb7347bfe8ed38eab2b8a8" }, "downloads": -1, "filename": "logjson-2017.12.1.tar.gz", "has_sig": false, "md5_digest": "5aaa5d09567184a3cae07d8c74da8a96", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8492, "upload_time": "2017-12-05T10:49:36", "url": "https://files.pythonhosted.org/packages/b4/d7/d2bf6c5c6983eda4048ede1f3e138c6ff6c59a2e5c49b57f3bdcba80354e/logjson-2017.12.1.tar.gz" } ], "2018.5.1": [ { "comment_text": "", "digests": { "md5": "9a126b20d470bb8ea16bada85272841f", "sha256": "952e25295744fbd971dc0dee56fef4ac9c65975df118428a8f68b6ab9236a84c" }, "downloads": -1, "filename": "logjson-2018.5.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9a126b20d470bb8ea16bada85272841f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15595, "upload_time": "2018-05-21T12:10:16", "url": "https://files.pythonhosted.org/packages/4a/d2/760403b53354556cd885513c4cbf910ff7d6b6b937d3d854ec3f8a8c2838/logjson-2018.5.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7a3fd9f13f904fc3c6f8a8622aa4f285", "sha256": "4b1c8dcc160789a8cb800a4cfb7387f53df78534bcb23b520f1173030f6c796e" }, "downloads": -1, "filename": "logjson-2018.5.1.tar.gz", "has_sig": false, "md5_digest": "7a3fd9f13f904fc3c6f8a8622aa4f285", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8456, "upload_time": "2018-05-21T12:10:25", "url": "https://files.pythonhosted.org/packages/e5/e7/08847e00db068cf1a6131f81f7aa757c258be83b3aad48e4e7bc7ed70779/logjson-2018.5.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9a126b20d470bb8ea16bada85272841f", "sha256": "952e25295744fbd971dc0dee56fef4ac9c65975df118428a8f68b6ab9236a84c" }, "downloads": -1, "filename": "logjson-2018.5.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9a126b20d470bb8ea16bada85272841f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15595, "upload_time": "2018-05-21T12:10:16", "url": "https://files.pythonhosted.org/packages/4a/d2/760403b53354556cd885513c4cbf910ff7d6b6b937d3d854ec3f8a8c2838/logjson-2018.5.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7a3fd9f13f904fc3c6f8a8622aa4f285", "sha256": "4b1c8dcc160789a8cb800a4cfb7387f53df78534bcb23b520f1173030f6c796e" }, "downloads": -1, "filename": "logjson-2018.5.1.tar.gz", "has_sig": false, "md5_digest": "7a3fd9f13f904fc3c6f8a8622aa4f285", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8456, "upload_time": "2018-05-21T12:10:25", "url": "https://files.pythonhosted.org/packages/e5/e7/08847e00db068cf1a6131f81f7aa757c258be83b3aad48e4e7bc7ed70779/logjson-2018.5.1.tar.gz" } ] }