{ "info": { "author": "Andrei Taranchenko", "author_email": "andrei360-git@yahoo.com", "bugtrack_url": null, "classifiers": [], "description": "Sift Log - JSON logging adapter for Python (now in color)\n=========================================================\n\nFeatures\n--------\n\n- Tag log statements with arbitrary values for easier grouping and\n analysis\n- Add keyword arguments that are converted to JSON values\n- Variable substitution\n- Specifies where log calls are made from\n- Meant to be used with core Python logging (formatters, handlers, etc)\n- Colorized logs on a console (POSIX only)\n- ``TRACE`` log level built-in\n\nExamples\n--------\n\nA simple log message\n^^^^^^^^^^^^^^^^^^^^\n\n.. code:: python\n\n log.info('Hello')\n\n``{\"msg\": \"Hello\", \"time\": \"12-12-14 10:12:01 EST\", \"level\": \"INFO\", \"loc\": \"test:log_test:20\"}``\n\nLogging with tags\n^^^^^^^^^^^^^^^^^\n\n.. code:: python\n\n log.debug('Creating new user', 'MONGO', 'STORAGE')\n\n``{\"msg\": \"Creating new user\", \"time\": \"12-12-14 10:12:09 EST\", \"tags\": [\"MONGO\", \"STORAGE\"], \"level\": \"DEBUG\", \"loc\": \"test:log_test:20\"}``\n\nAppending more data\n^^^^^^^^^^^^^^^^^^^\n\n.. code:: python\n\n log.debug('Some key', is_admin=True, username='papito')\n\n``{\"msg\": \"Some key\", \"is_admin\": true, \"username\": \"papito\", \"time\": \"12-12-14 10:12:04 EST\", \"level\": \"DEBUG\", \"loc\": \"test:log_test:20\"}``\n\nString substitution\n^^^^^^^^^^^^^^^^^^^\n\n.. code:: python\n\n log.debug('User \"$username\" admin? $is_admin', is_admin=False, username='fez')\n\n``{\"msg\": \"User \\\"fez\\\" admin? False\", \"username\": \"fez\", \"is_admin\": false, \"time\": \"12-12-14 10:12:18 EST\", \"level\": \"DEBUG\", \"loc\": \"test:log_test:20\"}``\n\nSetup\n-----\n\nLogging to console\n^^^^^^^^^^^^^^^^^^\n\n.. code:: python\n\n import sys\n import logging\n from siftlog import SiftLog\n\n logger = logging.getLogger()\n logger.setLevel(logging.INFO)\n handler = logging.StreamHandler(sys.stdout)\n logger.addHandler(handler)\n\n log = SiftLog(logger)\n\nIn this fashion, you can direct the JSON logs to `any logging\nhandler `__\n\nColor\n^^^^^\n\nFor enhanced flamboyancy, attach the ``ColorStreamHandler`` to your\nlogger. The output will not have color if the logs are being output to a\nfile, or on systems that are not POSIX (will not work on Windows for\nnow).\n\n.. code:: python\n\n from siftlog import SiftLog, ColorStreamHandler\n\n logger = logging.getLogger()\n handler = ColorStreamHandler(sys.stdout)\n logger.addHandler(handler)\n\n log = SiftLog(logger)\n\nDifferent colors\n''''''''''''''''\n\nYou can change font background, text color, and boldness:\n\n.. code:: python\n\n from siftlog import ColorStreamHandler\n\n handler = ColorStreamHandler(sys.stdout)\n handler.set_color(\n logging.DEBUG, bg=handler.WHITE, fg=handler.BLUE, bold=True\n )\n\nSupported colors\n''''''''''''''''\n\n- ColorStreamHandler.BLACK\n- ColorStreamHandler.RED\n- ColorStreamHandler.GREEN\n- ColorStreamHandler.YELLOW\n- ColorStreamHandler.BLUE\n- ColorStreamHandler.MAGENTA\n- ColorStreamHandler.CYAN\n- ColorStreamHandler.WHITE\n\nConstants (re-occuring values)\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nYou can define constants that will appear in every single log message.\nThis is useful, for example, if you'd like to log process PID and\nhostname with every log message (recommended). This is done upon log\nadapter initialization:\n\n.. code:: python\n\n import os\n from siftlog import SiftLog\n log = SiftLog(logger, pid=os.getpid(), env='INTEGRATION')\n\n``{\"msg\": \"And here I am\", \"time\": \"12-12-14 11:12:24 EST\", \"pid\": 37463, \"env\": \"INTEGRATION\", \"level\": \"INFO\"}``\n\nCustom time format\n^^^^^^^^^^^^^^^^^^\n\n.. code:: python\n\n log = SiftLog(logger)\n SiftLog.TIME_FORMAT = '%d-%m-%y %H:%m:%S %Z'\n\nDefine the format as accepted by\n`time.strftime() `__\n\nCustom location format\n^^^^^^^^^^^^^^^^^^^^^^\n\n.. code:: python\n\n log = SiftLog(logger)\n SiftLog.LOCATION_FORMAT = '$module:$method:$line_no'\n\nThe format should be a string containing any of the following variables:\n\n- ``$file``\n- ``$line_no``\n- ``$method``\n- ``$module``\n\nCustom core key names\n^^^^^^^^^^^^^^^^^^^^^\n\nCore keys, such as ``msg`` and ``level`` can be overridden, if they\nclash with common keys you might be using.\n\nThe following can be redefined:\n\n- SiftLog.MESSAGE (default ``msg``)\n- SiftLog.LEVEL (default ``level``)\n- SiftLog.LOCATION (default ``loc``)\n- SiftLog.TAGS (default ``tags``)\n- SiftLog.TIME (default ``time``)\n\nAs in:\n\n.. code:: python\n\n log = SiftLog(logger)\n SiftLog.log.MESSAGE = \"MESSAGE\"", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/papito/siftlog-py", "keywords": null, "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "siftlog", "package_url": "https://pypi.org/project/siftlog/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/siftlog/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/papito/siftlog-py" }, "release_url": "https://pypi.org/project/siftlog/0.21/", "requires_dist": null, "requires_python": null, "summary": "Structured JSON logging", "version": "0.21" }, "last_serial": 1360078, "releases": { "0.11": [ { "comment_text": "", "digests": { "md5": "d05a9024b0882cd7402cc6bef050b7db", "sha256": "c1cc9d680c84a3db319006862552690ab20b35a44daf19068013f20db45a597f" }, "downloads": -1, "filename": "siftlog-0.11.tar.gz", "has_sig": false, "md5_digest": "d05a9024b0882cd7402cc6bef050b7db", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3958, "upload_time": "2014-12-12T18:33:29", "url": "https://files.pythonhosted.org/packages/7b/c7/3110931de3c3e275f85222b12271791814efce4345299e523b13aea7663c/siftlog-0.11.tar.gz" } ], "0.12": [ { "comment_text": "", "digests": { "md5": "e7329d92623e59b1b96895a43cea3008", "sha256": "87f3f2bd788f82d62edf8724bc0dc0d0280aabdca62dfc1365d440117ce5d97b" }, "downloads": -1, "filename": "siftlog-0.12.tar.gz", "has_sig": false, "md5_digest": "e7329d92623e59b1b96895a43cea3008", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4218, "upload_time": "2014-12-16T23:48:36", "url": "https://files.pythonhosted.org/packages/f7/75/819559ea0b7385454f03db7cb2dc2fe43fda571c38bcbad107bbf3bd15f1/siftlog-0.12.tar.gz" } ], "0.13": [ { "comment_text": "", "digests": { "md5": "2f5cfac5a9d49cbc864e1ef04924bc59", "sha256": "d74f2e4101e2f049685000b3c8a4e23b60ba6dc95f330576d1b1f05c6243cae7" }, "downloads": -1, "filename": "siftlog-0.13.tar.gz", "has_sig": false, "md5_digest": "2f5cfac5a9d49cbc864e1ef04924bc59", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4424, "upload_time": "2014-12-17T21:44:51", "url": "https://files.pythonhosted.org/packages/ef/11/8185b29c16ccb74e1456772bb5e5c39d503e4650b3358033e41013f37dba/siftlog-0.13.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "b1a3e9ecef967c27786672e7dc1ff10b", "sha256": "09da02b8747f15b5e04557aa208a7e9861e0ddbcfec2be74aa5a413ecf646267" }, "downloads": -1, "filename": "siftlog-0.2.tar.gz", "has_sig": false, "md5_digest": "b1a3e9ecef967c27786672e7dc1ff10b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5964, "upload_time": "2014-12-19T16:02:08", "url": "https://files.pythonhosted.org/packages/0f/59/46228b5d2070168472800c95c9dbe9ba23db32de8feda09aa5cd03323a09/siftlog-0.2.tar.gz" } ], "0.21": [ { "comment_text": "", "digests": { "md5": "c0264c99b5e4e64882558873eb200e0f", "sha256": "e6cbf2a2eb95e8498530eb314e0c2abe3dac8b6762875b24711c5f847cb763e6" }, "downloads": -1, "filename": "siftlog-0.21.tar.gz", "has_sig": false, "md5_digest": "c0264c99b5e4e64882558873eb200e0f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5962, "upload_time": "2014-12-24T16:16:56", "url": "https://files.pythonhosted.org/packages/98/40/034c21711389d80fef67e85e2d1899369274f020641edaf8689846bd9756/siftlog-0.21.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c0264c99b5e4e64882558873eb200e0f", "sha256": "e6cbf2a2eb95e8498530eb314e0c2abe3dac8b6762875b24711c5f847cb763e6" }, "downloads": -1, "filename": "siftlog-0.21.tar.gz", "has_sig": false, "md5_digest": "c0264c99b5e4e64882558873eb200e0f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5962, "upload_time": "2014-12-24T16:16:56", "url": "https://files.pythonhosted.org/packages/98/40/034c21711389d80fef67e85e2d1899369274f020641edaf8689846bd9756/siftlog-0.21.tar.gz" } ] }