{ "info": { "author": "Aljosha Friemann", "author_email": "a.friemann@automate.wtf", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Topic :: System :: Logging" ], "description": "MDC\n===\n\n.. image:: https://travis-ci.org/AFriemann/mdc.svg?branch=master\n :target: https://travis-ci.org/AFriemann/mdc\n\nThis is thought to be an easy to use, import and go, library for Mapped Diagnostic Context style logging.\n\nLogs should include all necessary fields collected by the python logging library.\nHelper methods are provided to add context fields where required.\n\n**NOTE** `1.2.0`: recent changes will result in changed json output if using the `MDCHandler` class:\n\n.. code:: python\n\n >>> with MDC(foobar=\"baz\"):\n ... logging.warning(\"test\") \n { \"message\": \"test\", \"foobar\": \"baz\" }\n\n\nthis is a temporary solution to avoid breaking existing APIs. Please excuse any issues this might cause. In the future output handling should be done on the client side to avoid any possible breakage. The MDCHandler class will eventually be removed.\n\nInstallation\n------------\n\nPyPi:\n\n.. code:: bash\n\n $ pip install --user mdc\n\nFrom source:\n\n.. code:: bash\n\n $ pip install --user .\n\nUsage\n-----\n\nAdd a handler to the root logger or set the base handler with *logging.basicConfig*:\n\n.. code:: python\n\n >>> import logging\n >>> from mdc import MDCHandler\n\n >>> # use the MDCHandler only\n >>> logging.basicConfig(level=logging.DEBUG, handlers=[MDCHandler()])\n\n >>> # the MDC contextmanager\n >>> with MDC(foo='bar'):\n ... logging.warning('foobar')\n { ..., \"mdc\": { \"foo\": \"bar\" }, \"extra\": {}, ... }\n\n >>> # the with_mdc decorator\n >>> @with_mdc(test='123')\n ... def foobar(ctx):\n ... logging.warning('some warning')\n\n >>> foobar()\n { ..., \"mdc\": { \"test\": \"123\" }, \"extra\": {}, ... }\n\n >>> # logging with extra fields\n >>> logging.error('some error', extra=dict(foo='bar'))\n { ..., \"mdc\": {}, \"extra\": { \"foo\": \"bar\" }, ... }\n\nBy default log messages will include the following fields:\n\n.. code:: json\n\n {\n \"message\": \"deleting context b8321b4f-19ff-4c98-b011-5a97178e7ad6\",\n \"logger\": \"mdc\",\n \"timestamp\": \"2018-03-07T21:39:12.010851\",\n \"level\": \"DEBUG\",\n \"mdc\": {\n \"foo\": \"bar\",\n \"index\": 76\n },\n \"extra\": {},\n \"python\": {\n \"module\": \"__init__\",\n \"function\": \"MDC\",\n \"path\": \"/home/user/git/mdc/mdc/__init__.py\",\n \"file\": \"__init__.py\",\n \"line\": 56,\n \"process\": {\n \"name\": \"MainProcess\",\n \"id\": 31678\n },\n \"thread\": {\n \"name\": \"MainThread\",\n \"id\": 140433289192768\n }\n }\n }\n\nRunning tests:\n\n.. code:: bash\n\n $ tox", "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/afriemann/mdc", "keywords": "logging,mdc,context", "license": "", "maintainer": "", "maintainer_email": "", "name": "mdc", "package_url": "https://pypi.org/project/mdc/", "platform": "", "project_url": "https://pypi.org/project/mdc/", "project_urls": { "Homepage": "https://github.com/afriemann/mdc" }, "release_url": "https://pypi.org/project/mdc/1.2.1/", "requires_dist": null, "requires_python": "", "summary": "Mapped Diagnostic Context (MDC) library for python", "version": "1.2.1" }, "last_serial": 5802061, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "1bc73be462c2b58b8beede969934e932", "sha256": "7181c5f582c7379adfe84217cc764539ac5a24c4c3bec6bc42cb7554105a55d5" }, "downloads": -1, "filename": "mdc-1.0.0.tar.gz", "has_sig": false, "md5_digest": "1bc73be462c2b58b8beede969934e932", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2892, "upload_time": "2018-02-17T17:14:08", "url": "https://files.pythonhosted.org/packages/a3/b2/88ff2ae4ef606c3dff4c378ef8c99c0fa8c8a012384f67500b1fc8190814/mdc-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "5d1aac6decde583a8ebf2a6604a2e489", "sha256": "57f084d2788d0992552d5ea5706f39356486b0731c84c2a3290182ca9f75b166" }, "downloads": -1, "filename": "mdc-1.0.1.tar.gz", "has_sig": false, "md5_digest": "5d1aac6decde583a8ebf2a6604a2e489", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2876, "upload_time": "2018-02-17T18:23:05", "url": "https://files.pythonhosted.org/packages/e2/a9/01259f67f2a207a5950bb686fb1c239acfb10589d86cc4bf287876fa5bfa/mdc-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "c4165b4581acc4fba9a10a83a670be31", "sha256": "f9f8abbeb68ae15f6e1146dd42d51857c2d88233e0713ebb8f4d6a8b6ce87b64" }, "downloads": -1, "filename": "mdc-1.0.2.tar.gz", "has_sig": false, "md5_digest": "c4165b4581acc4fba9a10a83a670be31", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2895, "upload_time": "2018-02-17T18:30:49", "url": "https://files.pythonhosted.org/packages/a0/48/73f9444b352dc9063cfb5831aae48fb943cfeb5be462f65b08a3f28f3d4a/mdc-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "3c8eccb7958ed90d17439b274a5b145c", "sha256": "0d133e24931be42c71c272961b96c82bc6c15490b55b88125486636ac5e06958" }, "downloads": -1, "filename": "mdc-1.0.3.tar.gz", "has_sig": false, "md5_digest": "3c8eccb7958ed90d17439b274a5b145c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2922, "upload_time": "2018-02-27T16:22:53", "url": "https://files.pythonhosted.org/packages/db/2e/6b4044e7537c7d99f11f117321d4cfdc4ab838311f0b43cebf7d49afbe6e/mdc-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "3e918c6d707e05ec7edef0bfee72fb2c", "sha256": "0331e61d630ab27555d6b3e6e22bc7ccebb6daaa4dccbc7dedc8def9e4302438" }, "downloads": -1, "filename": "mdc-1.0.4.tar.gz", "has_sig": false, "md5_digest": "3e918c6d707e05ec7edef0bfee72fb2c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2921, "upload_time": "2018-02-27T16:37:58", "url": "https://files.pythonhosted.org/packages/01/a5/0e16aa9c943e37f6e4191effa1da0484defe973836ab37954642a91219f9/mdc-1.0.4.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "0231c51b841bd2940f260a7b27e13828", "sha256": "c212117cc0078a2fc7078da81b10d9f1f1a3fd09ce538b7e1b1bd3936708c0d1" }, "downloads": -1, "filename": "mdc-1.0.5.tar.gz", "has_sig": false, "md5_digest": "0231c51b841bd2940f260a7b27e13828", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2931, "upload_time": "2018-03-06T16:00:19", "url": "https://files.pythonhosted.org/packages/6f/0d/790830dd157213e7cc9daff8e0d363d63234262a7da6c49ec1ce39105aab/mdc-1.0.5.tar.gz" } ], "1.0.6": [ { "comment_text": "", "digests": { "md5": "1048f057cb4c775904aefa0d81072392", "sha256": "419ba4e9983b45805de38b5e84d9f132ff572f10e72b8eb2881202f3af4c97eb" }, "downloads": -1, "filename": "mdc-1.0.6.tar.gz", "has_sig": false, "md5_digest": "1048f057cb4c775904aefa0d81072392", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3067, "upload_time": "2018-03-06T19:36:58", "url": "https://files.pythonhosted.org/packages/bd/4b/c07c31a544c5e8d250cd266eee3726fc5d39940ddb292bd70d6726e4597d/mdc-1.0.6.tar.gz" } ], "1.0.7": [ { "comment_text": "", "digests": { "md5": "4815093da42ea3e8a188d0082efebe8f", "sha256": "4b5e168e088ad67f1d673e80b62d0e06c0e752907dfb8cca230742a9af7fc774" }, "downloads": -1, "filename": "mdc-1.0.7.tar.gz", "has_sig": false, "md5_digest": "4815093da42ea3e8a188d0082efebe8f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3129, "upload_time": "2018-03-06T19:56:59", "url": "https://files.pythonhosted.org/packages/a1/22/1f4c8b1af568ef89d9efb49a1f71369efa2b2f43bffd3ad18452a92066da/mdc-1.0.7.tar.gz" } ], "1.0.8": [ { "comment_text": "", "digests": { "md5": "a6cb3407f9160e0a1fc9ac1a286233a9", "sha256": "14f514a9ddd036f0ba3974fc582966b626a9227bc821b88263908660871490aa" }, "downloads": -1, "filename": "mdc-1.0.8.tar.gz", "has_sig": false, "md5_digest": "a6cb3407f9160e0a1fc9ac1a286233a9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3497, "upload_time": "2018-03-07T21:53:57", "url": "https://files.pythonhosted.org/packages/fb/3c/1d3799172419665508e5567e5b3353ee8e50861d64114940e26f03774b30/mdc-1.0.8.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "7d410a81ed0b82865a97622b1f10ef7f", "sha256": "afa548598aa87b8296b562da30b0cbde35c0726ab795ea019b1105f82a413173" }, "downloads": -1, "filename": "mdc-1.1.0.tar.gz", "has_sig": false, "md5_digest": "7d410a81ed0b82865a97622b1f10ef7f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4672, "upload_time": "2018-03-26T16:36:08", "url": "https://files.pythonhosted.org/packages/b5/67/c1b9a95cba9e0b843e366deefc650a549235ec07fdaf42c19d815bd77698/mdc-1.1.0.tar.gz" } ], "1.1.0.post1": [ { "comment_text": "", "digests": { "md5": "cd75f73660edf4ff18e9d2c1924a02a5", "sha256": "be83c2c2c764aed6d7c38e5707834000d4807fa040c62161220f42a24b60c60d" }, "downloads": -1, "filename": "mdc-1.1.0.post1.tar.gz", "has_sig": false, "md5_digest": "cd75f73660edf4ff18e9d2c1924a02a5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4597, "upload_time": "2018-04-26T11:15:08", "url": "https://files.pythonhosted.org/packages/d9/b8/939594e826708babf62601ff818ed809df249012da135457f205e9758727/mdc-1.1.0.post1.tar.gz" } ], "1.1.0.post2": [ { "comment_text": "", "digests": { "md5": "7ee36d2f03c5f52de8cc19d578bdd5d5", "sha256": "07923d41e6a1e78319a072e550f9a729162c20fce0c3506d6bfd9b5a24a1a674" }, "downloads": -1, "filename": "mdc-1.1.0.post2.tar.gz", "has_sig": false, "md5_digest": "7ee36d2f03c5f52de8cc19d578bdd5d5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4915, "upload_time": "2019-07-23T06:38:29", "url": "https://files.pythonhosted.org/packages/e0/de/6fa18b88716c139972c35c05b9601f5f1843056f067a45a801e4dd64ca4e/mdc-1.1.0.post2.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "d6e06336fd06ca12e27e9ba60e540381", "sha256": "9fd80830a375968005e3515f6953551e1f63d0cb6ce5ed0b9f45cb586353373e" }, "downloads": -1, "filename": "mdc-1.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d6e06336fd06ca12e27e9ba60e540381", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5857, "upload_time": "2019-07-23T07:13:49", "url": "https://files.pythonhosted.org/packages/e5/40/528804fa77956388c2fb5f3d7ddff7e90b3f262ae69a1d0a415385496c47/mdc-1.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "92c4ad36ea8e78e6591922a3b6eb82f8", "sha256": "cbdf716cf093b150253373439b4528a27be29ae6196fba507e2b77e993b89f77" }, "downloads": -1, "filename": "mdc-1.2.0.tar.gz", "has_sig": false, "md5_digest": "92c4ad36ea8e78e6591922a3b6eb82f8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4903, "upload_time": "2019-07-23T06:41:22", "url": "https://files.pythonhosted.org/packages/86/7c/4df85b3589c0c558d22193755deee0512814b7df04f221fbdf947c4a6add/mdc-1.2.0.tar.gz" } ], "1.2.0.post2": [ { "comment_text": "", "digests": { "md5": "9fe7533b91269e0fe0151d90ecb55832", "sha256": "b06228b31ec55a818161dc57de6664a119065fe1eadd01661fda1bd9dc6d365c" }, "downloads": -1, "filename": "mdc-1.2.0.post2.tar.gz", "has_sig": false, "md5_digest": "9fe7533b91269e0fe0151d90ecb55832", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5076, "upload_time": "2019-07-23T07:19:15", "url": "https://files.pythonhosted.org/packages/5a/45/266b513d2560afca1f2f1fef8d863ccd60da86c9fb4629241aa3f6c494e3/mdc-1.2.0.post2.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "db0235e5bcecd60beab376dd5d2a108b", "sha256": "deb9df228fc89ed185f3df4c00ca2aeb76a28ad5a6bb7b98bab413de0f44779e" }, "downloads": -1, "filename": "mdc-1.2.1.tar.gz", "has_sig": false, "md5_digest": "db0235e5bcecd60beab376dd5d2a108b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5332, "upload_time": "2019-09-09T06:51:19", "url": "https://files.pythonhosted.org/packages/63/67/e853e9d5617b46ece35f3789561a2b4ddbe5941e6d840b456e600ff72b45/mdc-1.2.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "db0235e5bcecd60beab376dd5d2a108b", "sha256": "deb9df228fc89ed185f3df4c00ca2aeb76a28ad5a6bb7b98bab413de0f44779e" }, "downloads": -1, "filename": "mdc-1.2.1.tar.gz", "has_sig": false, "md5_digest": "db0235e5bcecd60beab376dd5d2a108b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5332, "upload_time": "2019-09-09T06:51:19", "url": "https://files.pythonhosted.org/packages/63/67/e853e9d5617b46ece35f3789561a2b4ddbe5941e6d840b456e600ff72b45/mdc-1.2.1.tar.gz" } ] }