{"id":13467492,"url":"https://github.com/Textualize/toolong","last_synced_at":"2025-03-26T02:31:26.909Z","repository":{"id":221681167,"uuid":"740153592","full_name":"Textualize/toolong","owner":"Textualize","description":"A terminal application to view, tail, merge, and search log files (plus JSONL).","archived":false,"fork":false,"pushed_at":"2024-08-05T19:29:28.000Z","size":210,"stargazers_count":3353,"open_issues_count":35,"forks_count":65,"subscribers_count":14,"default_branch":"main","last_synced_at":"2025-03-17T11:52:08.236Z","etag":null,"topics":["jsonl","rich","terminal","terminal-based","textual","tui"],"latest_commit_sha":null,"homepage":"https://www.textualize.io/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Textualize.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-01-07T17:22:40.000Z","updated_at":"2025-03-17T00:43:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"83056d7a-ce2d-4f37-95fe-09feba0404f0","html_url":"https://github.com/Textualize/toolong","commit_stats":null,"previous_names":["textualize/toolong"],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Textualize%2Ftoolong","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Textualize%2Ftoolong/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Textualize%2Ftoolong/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Textualize%2Ftoolong/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Textualize","download_url":"https://codeload.github.com/Textualize/toolong/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245568566,"owners_count":20636803,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["jsonl","rich","terminal","terminal-based","textual","tui"],"created_at":"2024-07-31T15:00:57.221Z","updated_at":"2025-03-26T02:31:26.870Z","avatar_url":"https://github.com/Textualize.png","language":"Python","readme":"\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/Textualize/toolong/assets/554369/07f286c9-ac8d-44cd-905a-062a26060821\" alt=\"A Kookaburra sitting on a scroll\" width=\"300\" \u003e\n\u003c/p\u003e\n\n\n[![Discord](https://img.shields.io/discord/1026214085173461072)](https://discord.gg/Enf6Z3qhVr)\n\n# Toolong\n\nA terminal application to view, tail, merge, and search log files (plus JSONL).\n\n\u003cdetails\u003e  \n  \u003csummary\u003e 🎬 Viewing a single file \u003c/summary\u003e\n    \n\u0026nbsp;\n\n\u003cdiv align=\"center\"\u003e\n  \u003cvideo src=\"https://github.com/Textualize/tailless/assets/554369/a434d427-fa9a-44bf-bafb-1cfef32d65b9\" width=\"400\" /\u003e\n\u003c/div\u003e\n\n\u003c/details\u003e\n\n## Keep calm and log files\n\nSee [Toolong on Calmcode.io](https://calmcode.io/shorts/toolong.py) for a calming introduction to Toolong.\n\n## What?\n\n\u003cimg width=\"40%\" align=\"right\" alt=\"Screenshot 2024-02-08 at 13 47 28\" src=\"https://github.com/Textualize/toolong/assets/554369/1595e8e0-f5bf-428b-9b84-f0b5c7f506a1\"\u003e\n\n\n- Live tailing of log files.\n- Syntax highlights common web server log formats.\n- As fast to open a multiple-gigabyte file as it is to open a tiny text file.\n- Support for JSONL files: lines are pretty printed.\n- Opens .bz and .bz2 files automatically.\n- Merges log files by auto detecting timestamps.\n  \n\n## Why?\n\nI spent a lot of time in my past life as a web developer working with logs, typically on web servers via ssh.\nI would use a variety of tools, but my goto method of analyzing logs was directly on the server with *nix tools like as `tail`, `less`, and `grep` etc.\nAs useful as these tools are, they are not without friction.\n\nI built `toolong` to be the tool I would have wanted back then.\nIt is snappy, straightforward to use, and does a lot of the *grunt work* for you.\n\n\n### Screenshots\n\n\u003ctable\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\n            \u003cimg width=\"100%\" alt=\"Screenshot 2024-02-08 at 13 47 28\" src=\"https://github.com/Textualize/toolong/assets/554369/1595e8e0-f5bf-428b-9b84-f0b5c7f506a1\"\u003e\n        \u003c/td\u003e\n        \u003ctd\u003e\n            \u003cimg width=\"100%\" alt=\"Screenshot 2024-02-08 at 13 48 04\" src=\"https://github.com/Textualize/toolong/assets/554369/c95f0cf4-426d-4d25-b270-eec0f4cfc86f\"\u003e\n        \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\n            \u003cimg width=\"100%\" alt=\"Screenshot 2024-02-08 at 13 49 22\" src=\"https://github.com/Textualize/toolong/assets/554369/45e7509c-ffed-44cc-b3e6-f2a7a276bbe5\"\u003e\n        \u003c/td\u003e\n        \u003ctd\u003e\n            \u003cimg width=\"100%\" alt=\"Screenshot 2024-02-08 at 13 50 04\" src=\"https://github.com/Textualize/toolong/assets/554369/6840b626-539f-4ef9-88d9-25e0b96036b7\"\u003e\n        \u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n\n\n### Videos\n\n\u003cdetails\u003e  \n  \u003csummary\u003e 🎬 Merging multiple (compressed) files \u003c/summary\u003e\n\u0026nbsp;\n\n\u003cdiv align=\"center\"\u003e\n  \u003cvideo src=\"https://github.com/Textualize/tailless/assets/554369/efbbde11-bebf-44ff-8d2b-72a84b542b75\" /\u003e\n\u003c/div\u003e\n    \n\n\u003c/details\u003e\n\n\u003cdetails\u003e  \n  \u003csummary\u003e 🎬 Viewing JSONL files \u003c/summary\u003e\n\u0026nbsp;\n\n\u003cdiv align=\"center\"\u003e\n  \u003cvideo src=\"https://github.com/Textualize/tailless/assets/554369/38936600-34ee-4fe1-9fd3-b1581fc3fa37\"  /\u003e\n\u003c/div\u003e\n    \n    \n\n\u003c/details\u003e\n\n\u003cdetails\u003e  \n  \u003csummary\u003e 🎬 Live Tailing a file \u003c/summary\u003e\n\u0026nbsp;\n\n\u003cdiv align=\"center\"\u003e\n  \u003cvideo src=\"https://github.com/Textualize/tailless/assets/554369/7eea6a0e-b30d-4a94-bb45-c5bff0e329ca\" /\u003e\n\u003c/div\u003e\n\n\n\u003c/details\u003e\n\n## How?\n\nToolong is currently best installed with [pipx](https://github.com/pypa/pipx).\n\n```bash\npipx install toolong\n```\n\nYou could also install Toolong with Pip:\n\n```bash\npip install toolong\n```\n\n\u003e [!NOTE] \n\u003e If you use pip, you should ideally create a virtual environment to avoid potential dependancy conflicts.\n\nHowever you install Toolong, the `tl` command will be added to your path:\n\n```bash\ntl\n```\n\nIn the near future there will be more install methods, and hopefully your favorite package manager.\n\n### Compatibility\n\nToolong works on Linux, macOS, and Windows.\n\n### Opening files\n\nTo open a file with Toolong, add the file name(s) as arguments to the command:\n\n```bash\ntl mylogfile.log\n```\n\nIf you add multiple filenames, they will open in tabs.\n\nAdd the `--merge` switch to open multiple files and combine them in to a single view:\n\n```bash\ntl access.log* --merge\n```\n\nIn the app, press **f1** for additional help.\n\n### Piping\n\nIn addition to specifying files, you can also pipe directly into `tl`.\nThis means that you can tail data that comes from another process, and not neccesarily a file.\nHere's an example of piping output from the `tree` command in to Toolong:\n\n```bash\ntree / | tl\n```\n\n## Who?\n\nThis [guy](https://github.com/willmcgugan). An ex web developer who somehow makes a living writing terminal apps.\n\n    \n---\n\n## History\n\nIf you [follow me](https://twitter.com/willmcgugan) on Twitter, you may have seen me refer to this app as *Tailless*, because it was intended to be a replacement for a `tail` + `less` combo.\nI settled on the name \"Toolong\" because it is a bit more apt, and still had the same initials.\n\n## Development\n\nToolong v1.0.0 has a solid feature set, which covers most of my requirements.\nHowever, there is a tonne of features which could be added to something like this, and I will likely implement some of them in the future.\n\nIf you want to talk about Toolong, find me on the [Textualize Discord Server](https://discord.gg/Enf6Z3qhVr).\n\n\n## Thanks\n\nI am grateful for the [LogMerger](https://github.com/ptmcg/logmerger) project which I referenced (and borrowed regexes from) when building Toolong.\n\n## Alternatives\n\nToolong is not the first TUI for working with log files. See [lnav](https://lnav.org/) as a more mature alternative.\n","funding_links":[],"categories":["Python","OpsShit","tui","\u003ca name=\"text-processing\"\u003e\u003c/a\u003eText processing","Community"],"sub_categories":["Third Party Applications"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTextualize%2Ftoolong","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FTextualize%2Ftoolong","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTextualize%2Ftoolong/lists"}