{"id":15876592,"url":"https://github.com/ynqa/logu","last_synced_at":"2025-10-30T16:10:39.013Z","repository":{"id":251747802,"uuid":"838313589","full_name":"ynqa/logu","owner":"ynqa","description":"Extract patterns from unstructured log messages","archived":false,"fork":false,"pushed_at":"2024-08-05T13:26:37.000Z","size":36,"stargazers_count":96,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-13T07:13:36.475Z","etag":null,"topics":["cli","log-analyzer","rust","streaming","terminal","tui"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/ynqa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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-08-05T11:44:00.000Z","updated_at":"2025-04-06T19:01:40.000Z","dependencies_parsed_at":"2024-08-05T14:22:14.488Z","dependency_job_id":null,"html_url":"https://github.com/ynqa/logu","commit_stats":null,"previous_names":["ynqa/logu"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ynqa%2Flogu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ynqa%2Flogu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ynqa%2Flogu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ynqa%2Flogu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ynqa","download_url":"https://codeload.github.com/ynqa/logu/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248675422,"owners_count":21143768,"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":["cli","log-analyzer","rust","streaming","terminal","tui"],"created_at":"2024-10-06T02:01:01.871Z","updated_at":"2025-10-30T16:10:33.938Z","avatar_url":"https://github.com/ynqa.png","language":"Rust","funding_links":[],"categories":["Applications","Recently Updated","\u003ca name=\"text-processing\"\u003e\u003c/a\u003eText processing"],"sub_categories":["System tools","[Oct 06, 2024](/content/2024/10/06/README.md)"],"readme":"# logu\n\n![logu.gif](https://github.com/ynqa/ynqa/blob/master/demo/logu.gif)\n\n*logu* is for extracting patterns from (streaming) unstructured log messages.\n\nFor parsing unstructured logs, it uses the parser from\n[Drain](https://github.com/logpai/Drain3).\nIn simple terms, it tokenizes log messages,\nbuilds a tree structure, and groups similar logs into a single cluster,\nconverting unstructured log data into a format that can be organized and analyzed.\n\nThis approach is also used by\n[Grafana Loki](https://github.com/grafana/loki/tree/v3.0.0/pkg/pattern/drain).\nIf you are interested in log parsers themselves,\nother methods are summarized at\n[logpai/logparser](https://github.com/logpai/logparser),\nso please take a look.\n\n## Features\n\n- [x] Extract patterns from streaming log messages\n- Enables more detailed analysis\n  - [ ] Displays the number of messages included\n        and a list of specific examples in the cluster\n  - [ ] Identifies attributes such as IP, port\n\n## Installation\n\n### Homebrew\n\n```bash\nbrew install ynqa/tap/logu\n```\n\n### Cargo\n\n```bash\ncargo install logu\n```\n\n## Examples\n\n```bash\nstern --context kind-kind - | logu\n```\n\n## Keymap\n\n| Key                 | Action\n| :-                  | :-\n| \u003ckbd\u003eCtrl + C\u003c/kbd\u003e | Exit `logu`\n\n## Usage\n\n```bash\nUsage: logu [OPTIONS]\n\nOptions:\n      --retrieval-timeout \u003cRETRIEVAL_TIMEOUT_MILLIS\u003e\n          Timeout to read a next line from the stream in milliseconds. [default: 10]\n      --render-interval \u003cRENDER_INTERVAL_MILLIS\u003e\n          Interval to render the list in milliseconds. [default: 100]\n      --train-interval \u003cTRAIN_INTERVAL_MILLIS\u003e\n          [default: 10]\n      --cluster-size-th \u003cCLUSTER_SIZE_TH\u003e\n          Threshold to filter out small clusters. [default: 0]\n      --max-clusters \u003cMAX_CLUSTERS\u003e\n\n      --max-node-depth \u003cMAX_NODE_DEPTH\u003e\n          [default: 2]\n      --sim-th \u003cSIM_TH\u003e\n          [default: 0.4]\n      --max-children \u003cMAX_CHILDREN\u003e\n          [default: 100]\n      --param-str \u003cPARAM_STR\u003e\n          [default: \u003c*\u003e]\n  -h, --help\n          Print help (see more with '--help')\n  -V, --version\n          Print version\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fynqa%2Flogu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fynqa%2Flogu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fynqa%2Flogu/lists"}