{ "info": { "author": "Jorge Alpedrinha Ramos", "author_email": "python@uphold.com", "bugtrack_url": null, "classifiers": [], "description": "python-bunyan\r\n=============\r\n\r\nJson logger compatible with\r\n`node-bunyan `__\r\n\r\nGet the code\r\n============\r\n\r\n.. code:: sh\r\n\r\n git clone git@github.com:uphold/python-bunyan.git\r\n\r\nInstall\r\n=======\r\n\r\n.. code:: sh\r\n\r\n pip install bunyan\r\n\r\nHow to setup\r\n============\r\n\r\nProgramatically\r\n---------------\r\n\r\nCreate a new log handler and assign a ``BunyanFormatter`` formatter.\r\nRegister the handler on the current logger.\r\n\r\n.. code:: py\r\n\r\n import bunyan\r\n import logging\r\n import sys\r\n\r\n logger = logging.getLogger()\r\n\r\n logHandler = logging.StreamHandler(stream = sys.stdout)\r\n formatter = bunyan.BunyanFormatter()\r\n logHandler.setFormatter(formatter)\r\n logger.addHandler(logHandler)\r\n logger.setLevel(logging.DEBUG)\r\n\r\nUsing dictConfig\r\n----------------\r\n\r\nThis is the same example as defined above, but using a dictionary with\r\n``dictConfig``.\r\n\r\n.. code:: py\r\n\r\n LOG_CONFIG = {\r\n 'formatters': {\r\n 'bunyan': {\r\n '()' : 'bunyan.BunyanFormatter'\r\n }\r\n },\r\n 'handlers': {\r\n 'debug': {\r\n 'class': 'logging.StreamHandler',\r\n 'formatter': 'bunyan',\r\n 'stream': 'ext://sys.stdout'\r\n },\r\n },\r\n\r\n 'root': {\r\n 'level': 'DEBUG',\r\n 'handlers': ['debug']\r\n },\r\n 'version': 1\r\n }\r\n\r\n import logging.config\r\n logging.config.dictConfig(config)\r\n\r\nHow to use\r\n==========\r\n\r\nAfter setting up your loggers, bunyan allows to log in two different\r\nways: - Traditional - Using a dictionary\r\n\r\nTraditional logging\r\n-------------------\r\n\r\nString message\r\n~~~~~~~~~~~~~~\r\n\r\nTraditionaly logging in python allows to log a string message.\r\n\r\n.. code:: py\r\n\r\n logger.debug(\"This is a log message\")\r\n\r\nThis will output:\r\n\r\n.. code:: json\r\n\r\n {\r\n \"name\": \"root\",\r\n \"pathname\": \"test.py\",\r\n \"levelname\": \"DEBUG\",\r\n \"msg\": \"This is a log message\",\r\n \"time\": \"2016-03-14T16:34:47Z\",\r\n \"hostname\": \"jalpedrinha-mbp.local\",\r\n \"level\": 20,\r\n \"pid\": 41414,\r\n \"v\": 0\r\n }\r\n\r\nString message with extra dictionary\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\n\r\nThis module extends this functionality by allowing an extra keyword arg,\r\nand passing a dictionary.\r\n\r\n.. code:: py\r\n\r\n logger.debug(\"This is a log message with extra context\", extra = {'some': 'additional data'})\r\n\r\nAnd the output will include ``some`` key and value:\r\n\r\n.. code:: json\r\n\r\n {\r\n \"name\": \"root\",\r\n \"time\": \"2016-03-14T16:36:12Z\",\r\n \"some\": \"additional data\",\r\n \"pathname\": \"test.py\",\r\n \"msg\": \"This is a log message with extra context\",\r\n \"levelname\": \"DEBUG\",\r\n \"hostname\": \"jalpedrinha-mbp.local\",\r\n \"level\": 20,\r\n \"pid\": 41495,\r\n \"v\": 0\r\n }\r\n\r\nDictionary\r\n----------\r\n\r\nThis method works similarly to using an extra dictionary without the\r\nstring message, but instead of passing a keyword argument extra, you\r\njust pass the first positional argument as a dictionary.\r\n\r\n.. code:: py\r\n\r\n logger.debug({'some': 'data'})\r\n\r\nWhich results in:\r\n\r\n.. code:: json\r\n\r\n {\r\n \"name\": \"root\",\r\n \"some\": \"data\",\r\n \"pathname\": \"test.py\",\r\n \"msg\": \"\",\r\n \"time\": \"2016-03-14T16:45:23Z\",\r\n \"levelname\": \"DEBUG\",\r\n \"hostname\": \"jalpedrinha-mbp.local\",\r\n \"level\": 20,\r\n \"pid\": 43263,\r\n \"v\": 0\r\n }\r\n\r\nTesting\r\n=======\r\n\r\nDocker-compose and tox\r\n----------------------\r\n\r\nRun tox container:\r\n\r\n.. code:: sh\r\n\r\n docker-compose up\r\n\r\nNatively\r\n--------\r\n\r\nFirst, install ``dev-requirements``\r\n\r\n.. code:: sh\r\n\r\n pip install -r dev-requirements.txt\r\n\r\nThen run nose:\r\n\r\n::\r\n\r\n nosetests tests\r\n\r\n\r\nChangelog\r\n---------\r\n\r\n0.1.0 / 2016-03-15\r\n~~~~~~~~~~~~~~~~~~\r\n\r\n- `#2 `__ Add Bunyan\r\n Formatter (@jAlpedrinha)", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://www.github.com/uphold/python-bunyan/", "keywords": "", "license": "LICENSE", "maintainer": "", "maintainer_email": "", "name": "bunyan", "package_url": "https://pypi.org/project/bunyan/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/bunyan/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://www.github.com/uphold/python-bunyan/" }, "release_url": "https://pypi.org/project/bunyan/0.1.2/", "requires_dist": null, "requires_python": null, "summary": "Bunyan python logger", "version": "0.1.2" }, "last_serial": 2014126, "releases": { "0.1.0": [], "0.1.1": [ { "comment_text": "", "digests": { "md5": "06bd66beca1927049944417ea393b06b", "sha256": "913fbe01fe0be5eb791e7ffaf1e8332d44da469c07f9c32a63013a4c607d5f8f" }, "downloads": -1, "filename": "bunyan-0.1.1.tar.gz", "has_sig": false, "md5_digest": "06bd66beca1927049944417ea393b06b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7986, "upload_time": "2016-03-18T10:57:35", "url": "https://files.pythonhosted.org/packages/d2/92/390eb805bb37564b737df951dab0f9e423224426b6c4f01b7343b3d65772/bunyan-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "f410281d26ec62dc61ddd5046998c23a", "sha256": "e49e112b14cffa92c2a4e0e0052eac43a811f6ec594601f871b82355dc66432a" }, "downloads": -1, "filename": "bunyan-0.1.2.tar.gz", "has_sig": false, "md5_digest": "f410281d26ec62dc61ddd5046998c23a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8002, "upload_time": "2016-03-18T11:08:59", "url": "https://files.pythonhosted.org/packages/be/cd/661e57aca2dc0d1548112c65e6cccf185ea16421d95438bed2d28a0f138f/bunyan-0.1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f410281d26ec62dc61ddd5046998c23a", "sha256": "e49e112b14cffa92c2a4e0e0052eac43a811f6ec594601f871b82355dc66432a" }, "downloads": -1, "filename": "bunyan-0.1.2.tar.gz", "has_sig": false, "md5_digest": "f410281d26ec62dc61ddd5046998c23a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8002, "upload_time": "2016-03-18T11:08:59", "url": "https://files.pythonhosted.org/packages/be/cd/661e57aca2dc0d1548112c65e6cccf185ea16421d95438bed2d28a0f138f/bunyan-0.1.2.tar.gz" } ] }