{ "info": { "author": "Alexander Artemenko", "author_email": "svetlyak.40wt@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Topic :: System :: Logging" ], "description": "twiggy-goodies\n==============\n\n[![ChangeLog](http://allmychanges.com/p/python/twiggy-goodies/badge/?rnd=1)](http://allmychanges.com/p/python/twiggy-goodies/)\n\nHere you'll find some useful addons to [Twiggy], pythonic logger.\nThese addons help to use Twiggy with third-party libraries, which\nuse standart library's [logging][].\n\nMain target was to create convenient way to write log items\nwhich are grouped by some request identifier. Twiggy already\nsupports it by it's `fields` method, but sometimes it is too\ninconvenient to pass logger object around. That is why I take\nidea of a threadlocal loggers stack from the [logbook][] and\nimplemented it for twiggy.\n\nHere is example how to use it:\n\n from twiggy_goodies.setup import setup_logging\n from twiggy_goodies.threading import log\n\n def some_function():\n log.info('inner function does not accept logger')\n log.info('but uses same field as caller')\n\n\n setup_logging(None)\n\n log.info('before request')\n\n with log.fields(request_id='foo'):\n log.info('bar has happened')\n some_function()\n\n log.info('after request, id gone')\n\nOutput will be, as expected:\n\n 2014-04-14T18:29:02Z:INFO:before request\n 2014-04-14T18:29:02Z:INFO:request_id=foo:bar has happened\n 2014-04-14T18:29:02Z:INFO:request_id=foo:inner function does not accept logger\n 2014-04-14T18:29:02Z:INFO:request_id=foo:but uses same field as caller\n 2014-04-14T18:29:02Z:INFO:after request, id gone\n\nSame way, logger name could be changed, just replace `fields` context\nmanager to `name`.\n\nThere is no dark magick behind the scene: \n\n1) setup_logging does simple setup and redirects all output\n from standart `logging` to twiggy.\n2) `log` object is proxies all logging methods to a topmost\n logger on the thread-local stack.\n3) `fields` and `name` context managers just create a new\n logger as original twiggy's methods and put it on thread-local\n stack.\n\nThat is it.\n\nSome other goodies\n------------------\n\n * `twiggy_goodies.syslog` contains `SysLogOutput`.\n * `twiggy_goodies.json` contains `JsonOutput`, useful\n to pass data to logstash.\n * `twiggy_goodies.logstash` contains `LogstashOutput`,\n which sends messages directly to Logstash's UDP port.\n * `twiggy_goodies.django_rq` contains `job` decorator, which\n groups all messages logged from one task, using UUID.\n * `twiggy_goodies.django` contains `LogMixin` class which\n could be mixed to any management command, to group all\n logged messages by single UUID.\n * `twiggy_goodies.django` also contains `LogMiddleware`, to\n do the same as `LogMixin`, but for each http request.\n\n[Twiggy]: https://github.com/wearpants/twiggy\n[logging]: https://docs.python.org/2/library/logging.html\n[logbook]: http://pythonhosted.org//Logbook/\n", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/svetlyak40wt/twiggy-goodies", "keywords": "logging", "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "twiggy-goodies", "package_url": "https://pypi.org/project/twiggy-goodies/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/twiggy-goodies/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/svetlyak40wt/twiggy-goodies" }, "release_url": "https://pypi.org/project/twiggy-goodies/0.12.0/", "requires_dist": null, "requires_python": null, "summary": "Handlers and helpers for Twiggy logging library.", "version": "0.12.0" }, "last_serial": 2534321, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "e6ec6630b53c024674a7dbd04ce5991f", "sha256": "0cc257e4f4415014972311ae513022707a4e1ab6ff37c5d67e0398a2f47f2e7f" }, "downloads": -1, "filename": "twiggy-goodies-0.1.0.tar.gz", "has_sig": false, "md5_digest": "e6ec6630b53c024674a7dbd04ce5991f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3724, "upload_time": "2014-04-14T18:50:15", "url": "https://files.pythonhosted.org/packages/a5/c0/85b4c253e5f7bc95c00896f7663c186804bfaf48011f585de12c4de812d4/twiggy-goodies-0.1.0.tar.gz" } ], "0.10.0": [ { "comment_text": "", "digests": { "md5": "887e9e13d267a40edc4981a078b7a267", "sha256": "e1c14473fcd727691d0c898ab97ebdfef68d99e1b34bf596b498cb842cbc97bb" }, "downloads": -1, "filename": "twiggy-goodies-0.10.0.tar.gz", "has_sig": false, "md5_digest": "887e9e13d267a40edc4981a078b7a267", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7711, "upload_time": "2016-05-27T14:23:09", "url": "https://files.pythonhosted.org/packages/eb/d3/088ae25793221ab01fd8d5372954a1a3d71085dde3f75fbfce998d91be33/twiggy-goodies-0.10.0.tar.gz" } ], "0.11.0": [ { "comment_text": "", "digests": { "md5": "a2fd9442e5f368b0a5221efcf634e427", "sha256": "dd119cd5190f605c59abf3ea0a0ce8e4a779f711e134e4d3341a7c6685d59f24" }, "downloads": -1, "filename": "twiggy-goodies-0.11.0.tar.gz", "has_sig": false, "md5_digest": "a2fd9442e5f368b0a5221efcf634e427", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8945, "upload_time": "2016-05-29T22:07:17", "url": "https://files.pythonhosted.org/packages/2c/3e/8c30655241413dac8d05de459a62d584163c601375660fa3560cfa09cf83/twiggy-goodies-0.11.0.tar.gz" } ], "0.11.1": [ { "comment_text": "", "digests": { "md5": "0fd8d28ca88cdc0aa345c22382e3495b", "sha256": "bbe1548debad04776c94493c4b7bf28cb91f9e8549caf45707a903e6e001fa8d" }, "downloads": -1, "filename": "twiggy-goodies-0.11.1.tar.gz", "has_sig": false, "md5_digest": "0fd8d28ca88cdc0aa345c22382e3495b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9247, "upload_time": "2016-10-17T10:55:57", "url": "https://files.pythonhosted.org/packages/e5/c7/3356403a72be1dc8de89a983af70bd275fc9a435bbeff72399bdab972549/twiggy-goodies-0.11.1.tar.gz" } ], "0.11.2": [ { "comment_text": "", "digests": { "md5": "9f02f84467802138cfe762b0783c6873", "sha256": "ab5f3350006df415c55efcf536c1fbe033bdfe2a8352a32735c2b4f7b8d7d018" }, "downloads": -1, "filename": "twiggy-goodies-0.11.2.tar.gz", "has_sig": false, "md5_digest": "9f02f84467802138cfe762b0783c6873", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9452, "upload_time": "2016-10-17T16:34:59", "url": "https://files.pythonhosted.org/packages/a2/5e/d9ba625198df3e3da80fb930a98fa86c15ee6c56df46e792d82f8f4436e5/twiggy-goodies-0.11.2.tar.gz" } ], "0.11.3": [ { "comment_text": "", "digests": { "md5": "240b1ed160164a54f87867ef12ffae97", "sha256": "3d9b6f50c7592c03d57ddec5b572258120feb8a9aa5e1be5abc6b93e8bbfa915" }, "downloads": -1, "filename": "twiggy-goodies-0.11.3.tar.gz", "has_sig": false, "md5_digest": "240b1ed160164a54f87867ef12ffae97", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9524, "upload_time": "2016-10-18T17:00:19", "url": "https://files.pythonhosted.org/packages/e7/90/d68b1856ebf105e21eaebfbcd31518cb798aeae8d30e360ff372dfc70fc4/twiggy-goodies-0.11.3.tar.gz" } ], "0.12.0": [ { "comment_text": "", "digests": { "md5": "ba1e45e56cc960cf5ee84f21ca11299b", "sha256": "301e4ead1b02347a786cdb62604c9efa7ad44e0cdb67f254d7c3def2c2e10691" }, "downloads": -1, "filename": "twiggy-goodies-0.12.0.tar.gz", "has_sig": false, "md5_digest": "ba1e45e56cc960cf5ee84f21ca11299b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10197, "upload_time": "2016-12-22T07:37:20", "url": "https://files.pythonhosted.org/packages/75/19/9164991992c4756d521cec344a63e04119ecba639f864ea685dec90c72ad/twiggy-goodies-0.12.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "902e9fe3a6898e3af70de5da172a6cc3", "sha256": "6cab621ea2de8c3eceeeeeba4fffedbe5ed6c8f062653115f595fa1be1d05378" }, "downloads": -1, "filename": "twiggy-goodies-0.2.0.tar.gz", "has_sig": false, "md5_digest": "902e9fe3a6898e3af70de5da172a6cc3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4452, "upload_time": "2014-04-15T21:47:01", "url": "https://files.pythonhosted.org/packages/78/32/7d38e5f718a0dcdd44ec436539e02b3df752527c2f3ba5396c84e190adf6/twiggy-goodies-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "8f9d7b48689e19d959b1f2cbc2bede96", "sha256": "fa19587b6170a1fa9e3cf4765d09189f2546ac666b618e4afae163312a492f75" }, "downloads": -1, "filename": "twiggy-goodies-0.2.1.tar.gz", "has_sig": false, "md5_digest": "8f9d7b48689e19d959b1f2cbc2bede96", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4469, "upload_time": "2014-04-16T13:01:45", "url": "https://files.pythonhosted.org/packages/a0/33/71ef37579c8b185c5d0bf3cecc97dbe04d38f94b50c68c0b18825d2db281/twiggy-goodies-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "9c78bfc098a3a270c440cabe4c698807", "sha256": "97c26f9ad0b8528cc635aa8d756f02206d10165ec9d19daa0e74477bb14f760f" }, "downloads": -1, "filename": "twiggy-goodies-0.2.2.tar.gz", "has_sig": false, "md5_digest": "9c78bfc098a3a270c440cabe4c698807", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4480, "upload_time": "2014-04-17T08:26:20", "url": "https://files.pythonhosted.org/packages/7e/3e/e3a5568287fc65170fb7c71ad6601df69fcad037aba51598c325c20b8cb9/twiggy-goodies-0.2.2.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "fe5b29a45bf4d8f04c003df6e9195f07", "sha256": "875bf68288bce263899b3252df032626833df294493799a89940aa0bc3b93e7e" }, "downloads": -1, "filename": "twiggy-goodies-0.3.0.tar.gz", "has_sig": false, "md5_digest": "fe5b29a45bf4d8f04c003df6e9195f07", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4509, "upload_time": "2014-08-06T08:39:14", "url": "https://files.pythonhosted.org/packages/2b/20/c92b6c9c5c64accb40d188d09df1227020297fad52c67c6ce1b3880dbbf6/twiggy-goodies-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "02aa4881a6a7a399e26a1f5674f0cc3e", "sha256": "e22a3f60839cc05e62d5d3b5cf86a0287fb02f36d4e87579806bd99793fdd0de" }, "downloads": -1, "filename": "twiggy-goodies-0.3.1.tar.gz", "has_sig": false, "md5_digest": "02aa4881a6a7a399e26a1f5674f0cc3e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4515, "upload_time": "2014-08-06T08:58:30", "url": "https://files.pythonhosted.org/packages/de/2c/a06a23fde8fe36427a59a3f65fb04c5afefab0365e6160019b644ca94079/twiggy-goodies-0.3.1.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "a0fab6b990f06c7ec6fe3bde5e7bcdb7", "sha256": "0155df0b355c4cae26d2da7d908a810991e2d35c1bd666b8ebc5575e38fcf426" }, "downloads": -1, "filename": "twiggy-goodies-0.4.0.tar.gz", "has_sig": false, "md5_digest": "a0fab6b990f06c7ec6fe3bde5e7bcdb7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4774, "upload_time": "2014-08-09T03:07:23", "url": "https://files.pythonhosted.org/packages/ab/d3/e44f3ed081618dabc6140c9c088946a11cbbd4082c2ebc0ff5b4e0c7c62f/twiggy-goodies-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "4925c3cfa772bc7aaef63bb14baff650", "sha256": "7fae0a8fe524380ffbb9cde65adb1c202465fb24ee211d5ed805b4f416063119" }, "downloads": -1, "filename": "twiggy-goodies-0.4.1.tar.gz", "has_sig": false, "md5_digest": "4925c3cfa772bc7aaef63bb14baff650", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4834, "upload_time": "2014-08-19T21:35:25", "url": "https://files.pythonhosted.org/packages/57/1f/c3981fd073240cd36d17b4ae8edf1c89c27a8a0d19d046a7cc8a1fa90fc4/twiggy-goodies-0.4.1.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "076258d35d26c6880a8b8f9aa187b0d6", "sha256": "ca4dfd0eaaba895713e2601e298a4b68e0f9cd7c4737aa43cb85258f8c7f87fa" }, "downloads": -1, "filename": "twiggy-goodies-0.5.0.tar.gz", "has_sig": false, "md5_digest": "076258d35d26c6880a8b8f9aa187b0d6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4984, "upload_time": "2014-09-23T09:40:51", "url": "https://files.pythonhosted.org/packages/79/1f/8d3f64428f4f2d0986ee6ad6eed7efb56ff0c3fcd7c5a634d172b00ed0c3/twiggy-goodies-0.5.0.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "867c1c29d338f4b20c01e295b38bb3ec", "sha256": "fb5d71dfc07a44a959d26cd40c396a1fed308d89917578baf24ca8e331c6a3aa" }, "downloads": -1, "filename": "twiggy_goodies-0.6.0-py3-none-any.whl", "has_sig": false, "md5_digest": "867c1c29d338f4b20c01e295b38bb3ec", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 8728, "upload_time": "2015-04-16T09:30:59", "url": "https://files.pythonhosted.org/packages/5c/77/40efcf20b912843e2569391b0265696437b79875d1c9f2eeb2a730a1345d/twiggy_goodies-0.6.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9c23f6dd59bca0ff587e61c39e5dc537", "sha256": "9f4b43e151f67fc51421927fdbdc7329e9d01af5a11566440af3b6694f65b945" }, "downloads": -1, "filename": "twiggy-goodies-0.6.0.tar.gz", "has_sig": false, "md5_digest": "9c23f6dd59bca0ff587e61c39e5dc537", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5076, "upload_time": "2015-04-16T09:30:55", "url": "https://files.pythonhosted.org/packages/88/a3/70fe6c34242fb602b17f48a4e1306540bb8ca5fad46fd4932c0b2b07e2b5/twiggy-goodies-0.6.0.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "204d44d6e8c47ab4af87440a05076ffa", "sha256": "797cec57c7080c94325ae224729d7d5a477afbcfe9810a2b479d56427eef16c0" }, "downloads": -1, "filename": "twiggy-goodies-0.7.0.tar.gz", "has_sig": false, "md5_digest": "204d44d6e8c47ab4af87440a05076ffa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5130, "upload_time": "2015-11-16T07:49:08", "url": "https://files.pythonhosted.org/packages/06/ae/797733f19c0498644687dce75e0b57ee1c6053dff899922f85176adffa98/twiggy-goodies-0.7.0.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "0da5f4a9ff45708826367d1ad0b5191b", "sha256": "bd490644febf114316195166ae0c5007e7807008dedaf83e5e7ad5f2eb9ea348" }, "downloads": -1, "filename": "twiggy-goodies-0.8.0.tar.gz", "has_sig": false, "md5_digest": "0da5f4a9ff45708826367d1ad0b5191b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5227, "upload_time": "2016-05-25T08:58:36", "url": "https://files.pythonhosted.org/packages/32/4f/fa1d46332367a3176509a778ae8c2213a96c5b04746ba178a97652c1b336/twiggy-goodies-0.8.0.tar.gz" } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "34c8830768a068ebe9e769d30b2a0f22", "sha256": "5f8128eca32540a40c2c68afcac45458c2d0bbd15e1177d61bfad065273ca2f8" }, "downloads": -1, "filename": "twiggy-goodies-0.9.0.tar.gz", "has_sig": false, "md5_digest": "34c8830768a068ebe9e769d30b2a0f22", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7617, "upload_time": "2016-05-27T11:35:38", "url": "https://files.pythonhosted.org/packages/d0/21/c359f8a29cdb702de96fa3b9aea7da66f8e765b49af003031d5f112f0b07/twiggy-goodies-0.9.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ba1e45e56cc960cf5ee84f21ca11299b", "sha256": "301e4ead1b02347a786cdb62604c9efa7ad44e0cdb67f254d7c3def2c2e10691" }, "downloads": -1, "filename": "twiggy-goodies-0.12.0.tar.gz", "has_sig": false, "md5_digest": "ba1e45e56cc960cf5ee84f21ca11299b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10197, "upload_time": "2016-12-22T07:37:20", "url": "https://files.pythonhosted.org/packages/75/19/9164991992c4756d521cec344a63e04119ecba639f864ea685dec90c72ad/twiggy-goodies-0.12.0.tar.gz" } ] }