{ "info": { "author": "", "author_email": "", "bugtrack_url": null, "classifiers": [], "description": "============================\n\n`Repository `__\n\nFor JSON addicts, it can sometimes be a bit tricky to read\nJSON-formatter log output.\n\n::\n\n {\n \"name\": \"blue\",\n \"msg\": \"carry kid personal visit must table %s but machine other majority dog often avoid ever into %s now speech might when travel process everybody between structure group into behavior red especially staff energy condition somebody deal source %s %s very fish what final %s\",\n \"args\": [\n \"almost\",\n \"resource\",\n \"suffer\",\n \"build\",\n \"stop\"\n ],\n \"levelname\": \"ERROR\",\n \"levelno\": \"40\",\n \"pathname\": \"/thus/get/network/character/use/consumer/main\",\n \"filename\": \"middle.py\",\n \"module\": \"north\",\n \"exc_info\": \"None\",\n \"exc_text\": \"None\",\n \"stack_info\": \"None\",\n \"lineno\": \"1967\",\n \"funcName\": \"involve\",\n \"created\": \"9366883292.60978\",\n \"msecs\": \"708.5866876106\",\n \"relativeCreated\": \"766.580321207097\",\n \"thread\": \"284803497762\",\n \"threadName\": \"MainThread\",\n \"processName\": \"MainProcess\",\n \"process\": \"16475\"\n }\n\nI know, doesn\u2019t look that pleasing. That\u2019s why I created a GUI\napplication to display JSON logs in a table.\n\nNote that this application can ready *any* set of json data. It\u2019s just\nmainly useful for JSON log output.\n\nNeed a Handy JSON Logger?\n~~~~~~~~~~~~~~~~~~~~~~~~~\n\nWell, thought you\u2019d never ask.\n\nI actually created one\n\nWhy The Name \u201cFlannel?\u201d\n~~~~~~~~~~~~~~~~~~~~~~~\n\nThat\u2019s what loggers (lumberjacks) wear of course!\n\n|Logger|\n\n.. raw:: html\n\n

\n\n `[1] `__ `Bearded LumberJack Look `__ `CC BY 2.0 `__\n\n.. raw:: html\n\n

\n\nAnd hipsters.\n\n|Man In Plaid Shirt|\n\n.. raw:: html\n\n

\n\n `[2] `__ `Man in plaid shirt `__ `CC BY 2.0 `__\n\n.. raw:: html\n\n

\n\nBasic Usage\n-----------\n\nFlannel takes the input from standard input (stdin), meaning, to read\nJSON output, pipe what you want from another command:\n\n::\n\n $ ./do-this-thing | flannel\n\nAlready have a log file you\u2019d like to read? Don\u2019t need that much extra\nwork done:\n\n::\n\n $ cat myfile.log | flannel\n\nIf you play your cards right the following window should appear:\n\nA few things to note:\n\n- Each key in the json log entry corresponds to\n\n - A field in the **filter content** section.\n - A header in the table\n\n- The **Show Table Headings** is an entry, where you can type in any\n field listed (comma seperated) and the table will show only those\n columns you specify. You can also order the columns.\n- Sometimes a program may spit out strings not in json format. That\u2019s\n why I included the **Raw Output** tab, so that if things aren\u2019t\n working out, you can see what went wrong. Note this is the raw output\n for *your program*, not for *flannel*.\n\n.. figure:: ./doc/images/flannel-basic-example.png\n :alt: Flannel Window\n\n Flannel Window\n\nNot Seeing Anything in Flannel?\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nFirstly, you read the *Basic Usage* section, right? You need to feed in\nfrom stdin. ;-)\n\nNow that you have that covered\u2026\n\nI was a a bit confused myself, and I designed this thing!\n\nIt\u2019s not an issue with flannel, but, rather, with how UNIX handles\nstandard input and output. When a program writes content to the\nterminal, only stdout is piped. A program will typically write log\nentries to ``stderr``, which is not piped to ``stdin``.\n\n**tl;dr:** Do this instead:\n\n::\n\n $ ./do-this-thing 2>&1 | flannel\n\nNotice the **2>&1**. That redirects stderr to stdout. Then you should\nsee output.\n\nLog slowing down?\n~~~~~~~~~~~~~~~~~\n\nYou might not want to keep *all* the logs in memory. Hitting the\n``[Clear]`` button next to the output table should\u2013er\u2013clear things up.\n\nRequirements\n------------\n\n- Python 3+\n- PyQt5 and up\n- Lord of the Config\n\nOptionally, faker is used for the testing module\n``flannel.json_output``.\n\nInstallation\n------------\n\nInstall as you would other python packages:\n\n::\n\n $ pip install flannel\n\n.. |Logger| image:: ./doc/images/flannel-man.jpg\n.. |Man In Plaid Shirt| image:: ./doc/images/Man_in_plaid_shirt.jpg\n\nHome-page: UNKNOWN\nAuthor: Jordan Hewitt\nAuthor-email: jordan.h@startmail.com\nLicense: GPLv3\nDescription-Content-Type: UNKNOWN\nDescription: UNKNOWN\nKeywords: flannel qt lot viewer gui application app logging\nPlatform: UNKNOWN\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "flannel", "package_url": "https://pypi.org/project/flannel/", "platform": "", "project_url": "https://pypi.org/project/flannel/", "project_urls": null, "release_url": "https://pypi.org/project/flannel/1.2/", "requires_dist": [ "pyyaml", "dpath (==1.4.2)", "pyqt5" ], "requires_python": "", "summary": "Flannel \\| A JSON Log Reader", "version": "1.2" }, "last_serial": 3655759, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "810b13778ab8f2e611743e36c56431b0", "sha256": "4235e58fbf66c48ba443c7c9d7f763cd485b34d4462e7118da6bce9cdad563ca" }, "downloads": -1, "filename": "flannel-0.1.linux-x86_64.tar.gz", "has_sig": true, "md5_digest": "810b13778ab8f2e611743e36c56431b0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16128, "upload_time": "2018-03-09T22:34:18", "url": "https://files.pythonhosted.org/packages/5e/6d/fa4786c3e910278a2a34f20c10fcf204fe94b4d3f35aab0b5da18f790d03/flannel-0.1.linux-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "c8537bbf5fc1c1625bdb4c6b5f165742", "sha256": "7e1d85e74d31006276c87e64f093bdc64f36b9dcacb1e090dcda1b8af9d3a13a" }, "downloads": -1, "filename": "flannel-0.1-py3.6.egg", "has_sig": true, "md5_digest": "c8537bbf5fc1c1625bdb4c6b5f165742", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": null, "size": 18182, "upload_time": "2018-03-09T22:34:20", "url": "https://files.pythonhosted.org/packages/8c/1a/fc8d2bcc0613c03ea719f831220face0f8afe1968b4b1f17cf4afabb00cb/flannel-0.1-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "ab34ed1090e94a57034b0bfc16310f6c", "sha256": "a5ce2c2fdef55f040dd3bcd96e9bfc1fc628f48eb0efa3e71a755fed0381c459" }, "downloads": -1, "filename": "flannel-0.1-py3-none-any.whl", "has_sig": true, "md5_digest": "ab34ed1090e94a57034b0bfc16310f6c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12211, "upload_time": "2018-03-09T22:34:16", "url": "https://files.pythonhosted.org/packages/0b/34/ea1d5a43a6bfd8c1700ddb9b765e96ea1823c49f0faaabbefe19ae0ef518/flannel-0.1-py3-none-any.whl" } ], "1.0": [ { "comment_text": "", "digests": { "md5": "4d16aef97ad719fa76b2d7aee2b6e2af", "sha256": "d111057a4c14cab460eab86b193ac2ab51f2117962eaeb9a4ea50a7b4ee7aa18" }, "downloads": -1, "filename": "flannel-1.0-py3-none-any.whl", "has_sig": true, "md5_digest": "4d16aef97ad719fa76b2d7aee2b6e2af", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12007, "upload_time": "2018-03-09T22:36:48", "url": "https://files.pythonhosted.org/packages/7d/c6/b7cdbd59043582b5d3e04be325f6b52ccf6bbee1bc87cbc2f4ba4c36d5d6/flannel-1.0-py3-none-any.whl" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "1c5effa30b1a7e2021f90240f144e7cc", "sha256": "1cfa3fb44da3cb2f99cb4ee0ca654c15dda9aa1d24e3fb6804f916c0e98a2de0" }, "downloads": -1, "filename": "flannel-1.1-py3-none-any.whl", "has_sig": true, "md5_digest": "1c5effa30b1a7e2021f90240f144e7cc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12224, "upload_time": "2018-03-09T22:38:23", "url": "https://files.pythonhosted.org/packages/ad/6c/4bb300adfa0770802a41da1126bb89f364786c2c422784b431b70e9f9e0b/flannel-1.1-py3-none-any.whl" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "f933f185a7ea63dfb1f09d3f54652e22", "sha256": "b70b78c59d15617c91b2fd9f1d8493ca7ce303f652b56fdeb67b44e8ece862f2" }, "downloads": -1, "filename": "flannel-1.2-py3-none-any.whl", "has_sig": true, "md5_digest": "f933f185a7ea63dfb1f09d3f54652e22", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12211, "upload_time": "2018-03-09T22:43:28", "url": "https://files.pythonhosted.org/packages/36/8f/35c74ea375760279ca9289f34862086c71afe603e1ebd82dd9eccca9b7ed/flannel-1.2-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f933f185a7ea63dfb1f09d3f54652e22", "sha256": "b70b78c59d15617c91b2fd9f1d8493ca7ce303f652b56fdeb67b44e8ece862f2" }, "downloads": -1, "filename": "flannel-1.2-py3-none-any.whl", "has_sig": true, "md5_digest": "f933f185a7ea63dfb1f09d3f54652e22", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12211, "upload_time": "2018-03-09T22:43:28", "url": "https://files.pythonhosted.org/packages/36/8f/35c74ea375760279ca9289f34862086c71afe603e1ebd82dd9eccca9b7ed/flannel-1.2-py3-none-any.whl" } ] }