{ "info": { "author": "Vitalii Myhal", "author_email": "6934861+vmig@users.noreply.github.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Console", "Intended Audience :: Customer Service", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: MIT License", "Operating System :: POSIX :: Linux", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: System :: Logging" ], "description": "\nPyLogrus\n========\n\nPyLogrus is a structured logger for Python which is inspired by Logrus\nGolang library https://github.com/sirupsen/logrus. PyLogrus extends the\nbuilt-in ``logging`` module with the ability making a colorized records\nin log and records in JSON format.\n\nFeatures\n--------\n\nUsing this package, you will be able to:\n\n- colorize output in console (Textual format)\n- switch off the colorization (Textual format)\n- add extra fields in a log record\n- add permanent extra fields in a log record\n- add permanent prefix for message\n- create a new contextual instance\n- save log records in the JSON format\n- override the names of logging levels\n- override colors of base elements (Textual format)\n- override name of keys (JSON format)\n- define only needed fields in records (JSON format)\n- create time of a record in Zulu format\n\n.. figure:: https://github.com/vmig/pylogrus/blob/master/examples/screenshot.png?raw=true\n :alt: Colored\n\n\nInitialization\n--------------\n\n.. code:: python\n\n import logging\n from pylogrus import PyLogrus\n\n logging.setLoggerClass(PyLogrus)\n\n\nFormatters\n----------\n\nTextFormatter\n~~~~~~~~~~~~~\nTextFormatter class allows colorizing console output by setting a\n``colorize`` argument. The colorization can be switched off. Time of log\nrecord may be set in Zulu format. Just set ``datefmt`` argument as 'Z'.\n\n.. code:: python\n\n import logging\n from pylogrus import PyLogrus, TextFormatter\n\n logging.setLoggerClass(PyLogrus)\n\n logger = logging.getLogger(__name__) # type: PyLogrus\n logger.setLevel(logging.DEBUG)\n\n formatter = TextFormatter(datefmt='Z', colorize=True)\n\n ch = logging.StreamHandler()\n ch.setLevel(logging.DEBUG)\n ch.setFormatter(formatter)\n logger.addHandler(ch)\n\n\nOverriding name of levels\n^^^^^^^^^^^^^^^^^^^^^^^^^\nYou can define only necessary changes:\n\n.. code:: python\n\n formatter = TextFormatter(datefmt='Z', colorize=True)\n formatter.override_level_names({'CRITICAL': 'CRIT', 'ERROR': 'ERRO', 'WARNING': 'WARN', 'DEBUG': 'DEBU'})\n\nor for instance:\n\n.. code:: python\n\n formatter.override_level_names({'CRITICAL': 'FATAL'})\n\n\nOverriding colors\n^^^^^^^^^^^^^^^^^\nTextFormatter has several base elements which can be colorized. You can\nget them via ``color`` property:\n\n::\n\n print(formatter.color)\n ...\n {\n 'asctime': '\\x1b[2;37m', # time of log record\n 'prefix': '\\x1b[0;36m', # message prefix\n 'field': '\\x1b[0;32m', # key of extra field\n 'value': '\\x1b[0m', # value of extra field\n 'debug': '\\x1b[0;34m',\n 'info': '\\x1b[0;32m',\n 'warning': '\\x1b[0;33m',\n 'error': '\\x1b[0;31m',\n 'critical': '\\x1b[2;31m'\n }\n\nA color of elements can be changed using CL\\_\\* constants. You can\ndefine new color only for those elements you need.\n\n.. code:: python\n\n from pylogrus import PyLogrus, TextFormatter, CL_BLDYLW\n ...\n formatter = TextFormatter(colorize=True)\n formatter.override_colors({'prefix': CL_BLDYLW})\n\n\nJsonFormatter\n~~~~~~~~~~~~~\nJsonFormatter class allows to save log records in the JSON format.\nDuring class initialization, you can:\n\n- Set time of log record in Zulu format. Just set ``datefmt`` argument\n as 'Z'.\n- Define a list of enabled fields which will be present in a log record\n via ``enabled_fields`` argument. An enabled field is represented by\n original field name or by a tuple which contains the original name\n and new desirable name. The new name overrides the original one in an\n output.\n- For pretty print a JSON log record in a console, set the ``indent``\n and ``sort_keys`` arguments (optional).\n\n.. code:: python\n\n import logging\n from pylogrus import PyLogrus, JsonFormatter\n\n logging.setLoggerClass(PyLogrus)\n\n logger = logging.getLogger(__name__) # type: PyLogrus\n logger.setLevel(logging.DEBUG)\n\n enabled_fields = [\n ('name', 'logger_name'),\n ('asctime', 'service_timestamp'),\n ('levelname', 'level'),\n ('threadName', 'thread_name'),\n 'message',\n ('exception', 'exception_class'),\n ('stacktrace', 'stack_trace'),\n 'module',\n ('funcName', 'function')\n ]\n\n formatter = JsonFormatter(datefmt='Z', enabled_fields=enabled_fields, indent=2, sort_keys=True)\n\n ch = logging.StreamHandler()\n ch.setLevel(logging.DEBUG)\n ch.setFormatter(formatter)\n logger.addHandler(ch)\n\n\nOverriding name of levels\n^^^^^^^^^^^^^^^^^^^^^^^^^\nName of levels can be overridden in the same way as in case of using the\nTextFormatter.\n\n.. code:: python\n\n formatter = JsonFormatter()\n formatter.override_level_names({'WARNING': 'WARN'})\n\n\nUsage\n-----\nPlease, see the examples of usage in the ``examples`` directory.\n\nLog message as usual:\n\n.. code:: python\n\n import logging\n from pylogrus import PyLogrus, TextFormatter\n\n def get_logger():\n logging.setLoggerClass(PyLogrus)\n ...\n formatter = TextFormatter()\n ...\n return logger\n\n log = get_logger()\n log.debug(\"Using base logger\")\n\nLog message with an extra field:\n\n.. code:: python\n\n log.withFields({'user': 'John Doe'}).debug(\"Message with an extra field\")\n\nAdd permanent field(s) in logger and get a contextual instance:\n\n.. code:: python\n\n log_ctx = log.withFields({'context': 1})\n log_ctx.info(\"Add permanent field into current logger\")\n\nAdd permanent prefix to message for current logger instance:\n\n.. code:: python\n\n log_ctx = log_ctx.withPrefix(\"[API]\")\n log_ctx.info(\"Add prefix as a permanent part of a message\")\n\nLog message with extra fields:\n\n.. code:: python\n\n log_ctx.withFields({\n 'user': 'Admin',\n 'transaction_id': str(uuid.uuid4())\n }).warning(\"Message with prefix and extra fields\")\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/vmig/pylogrus", "keywords": "logger logging colorize output json extra fields", "license": "MIT License", "maintainer": "", "maintainer_email": "", "name": "pylogrus", "package_url": "https://pypi.org/project/pylogrus/", "platform": "", "project_url": "https://pypi.org/project/pylogrus/", "project_urls": { "Homepage": "https://github.com/vmig/pylogrus" }, "release_url": "https://pypi.org/project/pylogrus/0.4.0/", "requires_dist": [ "six (>=1.10)", "coverage; extra == 'test'", "flake8; extra == 'test'", "pep8; extra == 'test'" ], "requires_python": "", "summary": "PyLogrus is a structured logger for Python", "version": "0.4.0" }, "last_serial": 3996848, "releases": { "0.3.3": [ { "comment_text": "", "digests": { "md5": "3aa7e3c57a81d8b51415905e40e8cced", "sha256": "2257b46af8b0431f0e09b0db84b79152593ab752a117550e883d290edbfd9201" }, "downloads": -1, "filename": "pylogrus-0.3.3.tar.gz", "has_sig": false, "md5_digest": "3aa7e3c57a81d8b51415905e40e8cced", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8464, "upload_time": "2018-01-08T11:09:13", "url": "https://files.pythonhosted.org/packages/52/13/fee5a8a0efba7ee539d2cdf799b6454c4527d8cb509dbd82280598f295b4/pylogrus-0.3.3.tar.gz" } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "438d71fafd3bd2273a9fb8de7c06a2d4", "sha256": "f0dc8f68a3104fd8f7ee29f9f23cefed73f0c836563b6f60d98ed42254852e05" }, "downloads": -1, "filename": "pylogrus-0.3.4.tar.gz", "has_sig": false, "md5_digest": "438d71fafd3bd2273a9fb8de7c06a2d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8477, "upload_time": "2018-02-13T10:28:15", "url": "https://files.pythonhosted.org/packages/6a/8d/16b90c47a0d0f67d7e612d82a4e42d74bdd980413d016e79bc0efaf69830/pylogrus-0.3.4.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "a52ad8d8a593e002856b5cc0d1bb2747", "sha256": "4458910a5da8f313a6ff1e09dace69a93147736caad31724dbb9ff464369ea3b" }, "downloads": -1, "filename": "pylogrus-0.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a52ad8d8a593e002856b5cc0d1bb2747", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11610, "upload_time": "2018-06-24T13:55:52", "url": "https://files.pythonhosted.org/packages/0a/1e/442607ebf6d6f3e6f32d10c1f280ca43336ca8aaad308008b91d3d386488/pylogrus-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "db8a897d40b71910a6295451ade1a359", "sha256": "13db3a7b28f185d6b0b703be6c71fc612c271da92eb49753ab487dcf56299358" }, "downloads": -1, "filename": "pylogrus-0.4.0.tar.gz", "has_sig": false, "md5_digest": "db8a897d40b71910a6295451ade1a359", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10616, "upload_time": "2018-06-24T13:55:54", "url": "https://files.pythonhosted.org/packages/ca/ae/cf2c880abe69abfd9c5e49922e789f5628b3c598c697be7bb91068743dcd/pylogrus-0.4.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a52ad8d8a593e002856b5cc0d1bb2747", "sha256": "4458910a5da8f313a6ff1e09dace69a93147736caad31724dbb9ff464369ea3b" }, "downloads": -1, "filename": "pylogrus-0.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a52ad8d8a593e002856b5cc0d1bb2747", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11610, "upload_time": "2018-06-24T13:55:52", "url": "https://files.pythonhosted.org/packages/0a/1e/442607ebf6d6f3e6f32d10c1f280ca43336ca8aaad308008b91d3d386488/pylogrus-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "db8a897d40b71910a6295451ade1a359", "sha256": "13db3a7b28f185d6b0b703be6c71fc612c271da92eb49753ab487dcf56299358" }, "downloads": -1, "filename": "pylogrus-0.4.0.tar.gz", "has_sig": false, "md5_digest": "db8a897d40b71910a6295451ade1a359", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10616, "upload_time": "2018-06-24T13:55:54", "url": "https://files.pythonhosted.org/packages/ca/ae/cf2c880abe69abfd9c5e49922e789f5628b3c598c697be7bb91068743dcd/pylogrus-0.4.0.tar.gz" } ] }