{ "info": { "author": "Ali Askar", "author_email": "aliaskar1024@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# Noodle Logging - The tiny JSON logger for Python 3.x\n\nNoodle Logging is a tiny package aimed at making logging from python applications into JSON easier.\n\n\n#### Dependencies\n1. [structlog](https://github.com/hynek/structlog)\n2. [python-json-logger](https://github.com/madzak/python-json-logger)\n3. [six](https://github.com/benjaminp/six)\n\n\n#### Installation\n\n```pip3 install noodle-logging```\n\n#### Usage Examples\n\n##### 1. Basic logging\n\n```python\nfrom noodle_logging.logger import log\n\ndef test():\n log.info(\"event\", some_parameter=12, some_other_parameter=\"hello\")\n\nif __name__ == \"__main__\":\n test()\n```\n\n###### Output\n```json\n{\"message\": \"event\", \"some_parameter\": 12, \"some_other_parameter\": \"hello\", \"logger\": \"__main__\", \"level\": \"info\", \"timestamp\": \"2019-05-28T11:59:14.975823Z\"}\n```\n\n##### 2. High level Profiling - Using decorators\n```python\nimport time\n\nfrom noodle_logging.decorators import profile\n\n@profile\ndef some_method(*args, **kwargs):\n time.sleep(1)\n print(some_method.__name__, \"method in execution with args \", args,\n \" and kwargs \", kwargs)\n time.sleep(1)\n\nif __name__ == \"__main__\":\n some_method(1, 2, 3, a=2, b=3)\n```\n\n###### Output\n```\n{\"message\": \"Function Profiler\", \"fn_name\": \"some_method\", \"fn_id\": \"2df1335aa93f41438412da6b517a6781\", \"timestamp_start\": 1559044955.3319192, \"fn_args\": \"1,2,3\", \"fn_kwargs\": \"{\\\"a\\\": 2, \\\"b\\\": 3}\", \"logger\": \"noodle_logging.decorators\", \"level\": \"info\", \"timestamp\": \"2019-05-28T12:02:35.332396Z\"}\n>>> some_method method in execution with args (1, 2, 3) and kwargs {'a': 2, 'b': 3}\n{\"message\": \"Function Profiler\", \"fn_name\": \"some_method\", \"fn_id\": \"2df1335aa93f41438412da6b517a6781\", \"timestamp_start\": 1559044955.3319192, \"fn_args\": \"1,2,3\", \"fn_kwargs\": \"{\\\"a\\\": 2, \\\"b\\\": 3}\", \"timestamp_end\": 1559044957.340735, \"exec_time\": 2.0088157653808594, \"logger\": \"noodle_logging.decorators\", \"level\": \"info\", \"timestamp\": \"2019-05-28T12:02:37.340991Z\"}\n```\n\n##### 3. Catching (and Logging) an exception - Using decorators\n```python\nfrom noodle_logging.decorators import log_exceptions\n\n@log_exceptions\ndef some_other_method(*args, **kwargs):\n print(some_other_method.__name__, \"method in execution with args \",\n args, \" and kwargs \", kwargs)\n print(1 / 0)\n # Below line will not be executed.\n print(\"Execution completed\", some_other_method.__name__)\n\nif __name__ == \"__main__\":\n some_other_method(1, 2, 3, a=2, b=3, c=4)\n```\n\n###### Output\n```\nsome_other_method method in execution with args (1, 2, 3) and kwargs {'a': 2, 'b': 3, 'c': 4}\n{\"message\": \"Exception Found.\", \"exception\": \"Traceback (most recent call last):\\n File \\\"/Users/askar.ali/Desktop/noodle-logging-original/noodle_logging/decorators.py\\\", line 48, in wrapper\\n return func(*args, **kwargs)\\n File \\\"run.py\\\", line 29, in some_other_method\\n print(1/0)\\nZeroDivisionError: division by zero\", \"fn_args\": \"1,2,3\", \"fn_kwargs\": \"{\\\"a\\\": 2, \\\"b\\\": 3, \\\"c\\\": 4}\", \"logger\": \"noodle_logging.decorators\", \"level\": \"error\", \"timestamp\": \"2019-05-28T12:06:10.188581Z\"}\nTraceback (most recent call last):\n File \"run.py\", line 49, in \n some_other_method(1, 2, 3, a=2, b=3, c=4)\n File \"/Users/askar.ali/Desktop/noodle-logging-original/noodle_logging/decorators.py\", line 48, in wrapper\n return func(*args, **kwargs)\n File \"run.py\", line 29, in some_other_method\n print(1/0)\nZeroDivisionError: division by zero\n```\n\n##### 4. Profiling + Catching (and Logging) exceptions - Using decorators\n```python\nfrom noodle_logging.decorators import profile, log_exceptions\n\n@profile\n@log_exceptions\ndef noodling_around(*args, **kwargs):\n print(noodling_around.__name__, \"method in execution with args \",\n args, \" and kwargs \", kwargs)\n print(1 / 0)\n # This line will not be executed.\n print(\"Execution completed\", noodling_around.__name__)\n\nif __name__ == \"__main__\":\n noodling_around(1, 2, 3, a=2, b=3, c=4)\n\n```\n\n###### Output\n```\n{\"message\": \"Function Profiler\", \"fn_name\": \"noodling_around\", \"fn_id\": \"9a3e74924b77440c9a5f1fe4c05522e6\", \"timestamp_start\": 1559045360.7205062, \"fn_args\": \"1,2,3\", \"fn_kwargs\": \"{\\\"a\\\": 2, \\\"b\\\": 3, \\\"c\\\": 4}\", \"logger\": \"noodle_logging.decorators\", \"level\": \"info\", \"timestamp\": \"2019-05-28T12:09:20.720621Z\"}\nnoodling_around method in execution with args (1, 2, 3) and kwargs {'a': 2, 'b': 3, 'c': 4}\n{\"message\": \"Exception Found.\", \"exception\": \"Traceback (most recent call last):\\n File \\\"/Users/askar.ali/Desktop/noodle-logging-original/noodle_logging/decorators.py\\\", line 48, in wrapper\\n return func(*args, **kwargs)\\n File \\\"run.py\\\", line 41, in noodling_around\\n print(1 / 0)\\nZeroDivisionError: division by zero\", \"fn_args\": \"1,2,3\", \"fn_kwargs\": \"{\\\"a\\\": 2, \\\"b\\\": 3, \\\"c\\\": 4}\", \"logger\": \"noodle_logging.decorators\", \"level\": \"error\", \"timestamp\": \"2019-05-28T12:09:20.721559Z\"}\nTraceback (most recent call last):\n File \"run.py\", line 50, in \n noodling_around(1, 2, 3, a=2, b=3, c=4)\n File \"/Users/askar.ali/Desktop/noodle-logging-original/noodle_logging/decorators.py\", line 26, in wrapper\n result = func(*args, **kwargs)\n File \"/Users/askar.ali/Desktop/noodle-logging-original/noodle_logging/decorators.py\", line 48, in wrapper\n return func(*args, **kwargs)\n File \"run.py\", line 41, in noodling_around\n print(1 / 0)\nZeroDivisionError: division by zero\n```\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": "https://github.com/beingaskar/noodle_logging", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "noodle-logging", "package_url": "https://pypi.org/project/noodle-logging/", "platform": "", "project_url": "https://pypi.org/project/noodle-logging/", "project_urls": { "Homepage": "https://github.com/beingaskar/noodle_logging" }, "release_url": "https://pypi.org/project/noodle-logging/0.2/", "requires_dist": [ "six (==1.12.0)", "structlog (==19.1.0)", "python-json-logger (==0.1.11)" ], "requires_python": "", "summary": "Logging in JSON the easy way!", "version": "0.2" }, "last_serial": 5326499, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "cb8fbc2b631036b88212482ff568a69c", "sha256": "41a85498b2f247218d8b7b55d3a94c4a17f1e220ef95e49d6fbe507800c9effe" }, "downloads": -1, "filename": "noodle_logging-0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "cb8fbc2b631036b88212482ff568a69c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3875, "upload_time": "2019-05-28T11:24:00", "url": "https://files.pythonhosted.org/packages/02/85/e5776ccf1755ba94c2a44ebb6ae0a507311aafb787994efd0c3bfd7c0c68/noodle_logging-0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "250a53fb4818fdb46edad75e6baceca1", "sha256": "81ffdb46eb89e383369d21152dab83829fd7032af815c4f2b3a069a8dc1cca9a" }, "downloads": -1, "filename": "noodle-logging-0.1.tar.gz", "has_sig": false, "md5_digest": "250a53fb4818fdb46edad75e6baceca1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2200, "upload_time": "2019-05-28T11:24:02", "url": "https://files.pythonhosted.org/packages/ba/60/681015932063b6653e86f0fe9f8ef5f19a7e0bac62ca003b0752debdbe09/noodle-logging-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "810071d475803614347f4e85a316b0f0", "sha256": "9e73255c00ae84354819ac8c11d9e410e21b4c082a33f18f3656a5c379aff86f" }, "downloads": -1, "filename": "noodle_logging-0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "810071d475803614347f4e85a316b0f0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5175, "upload_time": "2019-05-28T12:17:45", "url": "https://files.pythonhosted.org/packages/57/97/0d9d1b4913ef2793d7aecbd3a527e0fb42249d50a0d3e7c7ca7c783745c9/noodle_logging-0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f4c88f583c25682c851f3383d0b34926", "sha256": "b744cd46a4218a927057ac6edd027ac6ff79438087ea32a3cd9b32d66a038548" }, "downloads": -1, "filename": "noodle-logging-0.2.tar.gz", "has_sig": false, "md5_digest": "f4c88f583c25682c851f3383d0b34926", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3765, "upload_time": "2019-05-28T12:17:47", "url": "https://files.pythonhosted.org/packages/e4/6f/8105e88778b869c0cb41b532f1fc2e54cc41c74ff1bd642d63270d7d536a/noodle-logging-0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "810071d475803614347f4e85a316b0f0", "sha256": "9e73255c00ae84354819ac8c11d9e410e21b4c082a33f18f3656a5c379aff86f" }, "downloads": -1, "filename": "noodle_logging-0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "810071d475803614347f4e85a316b0f0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5175, "upload_time": "2019-05-28T12:17:45", "url": "https://files.pythonhosted.org/packages/57/97/0d9d1b4913ef2793d7aecbd3a527e0fb42249d50a0d3e7c7ca7c783745c9/noodle_logging-0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f4c88f583c25682c851f3383d0b34926", "sha256": "b744cd46a4218a927057ac6edd027ac6ff79438087ea32a3cd9b32d66a038548" }, "downloads": -1, "filename": "noodle-logging-0.2.tar.gz", "has_sig": false, "md5_digest": "f4c88f583c25682c851f3383d0b34926", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3765, "upload_time": "2019-05-28T12:17:47", "url": "https://files.pythonhosted.org/packages/e4/6f/8105e88778b869c0cb41b532f1fc2e54cc41c74ff1bd642d63270d7d536a/noodle-logging-0.2.tar.gz" } ] }