{"id":16207921,"url":"https://github.com/applejag/relog","last_synced_at":"2025-07-07T03:09:05.020Z","repository":{"id":96518200,"uuid":"539121181","full_name":"applejag/relog","owner":"applejag","description":"A log re-formatter CLI","archived":false,"fork":false,"pushed_at":"2024-05-14T10:50:22.000Z","size":84,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-30T02:06:53.131Z","etag":null,"topics":["cli","go","go-cli","golang","golang-cli"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/applejag.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2022-09-20T17:50:08.000Z","updated_at":"2024-05-14T10:50:26.000Z","dependencies_parsed_at":null,"dependency_job_id":"5769eb25-f9da-4804-ab20-446c054a1f77","html_url":"https://github.com/applejag/relog","commit_stats":null,"previous_names":["applejag/relog"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/applejag/relog","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/applejag%2Frelog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/applejag%2Frelog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/applejag%2Frelog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/applejag%2Frelog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/applejag","download_url":"https://codeload.github.com/applejag/relog/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/applejag%2Frelog/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264005172,"owners_count":23542829,"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","go","go-cli","golang","golang-cli"],"created_at":"2024-10-10T10:14:49.319Z","updated_at":"2025-07-07T03:09:05.004Z","avatar_url":"https://github.com/applejag.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# relog - A log re-formatter CLI\n\nReads JSON or logfmt input, and outputs with its own colored logging output.\n\nJSON logs are really useful for indexing inside Elasticsearch/Kibana, but\nhorrible to read for us Kubernetes maintainers that just want to do some quick\n`kubectl logs my-pod`\n\nWith `relog`, you pipe the log output right through and it figures out the rest.\n\n## Features\n\n- MongoDB logs parsing\n- Multiline-JSON logs parsing (such as Elasticsearch stacktraces)\n- Parses logfmt logs\n- Streaming, meaning support for `kubectl logs -f my-pod | relog`\n\n## Install\n\nRequires Go 1.19 (or higher)\n\n```sh\ngo install github.com/jilleJr/relog@latest\n```\n\n\u003e :warning: Currently depends on the `bytedance/sonic` JSON parsing library\n\u003e which has a strong dependency on Amd64 architecture.\n\u003e\n\u003e In other words, this does not work on ARM\n\u003e (such as Mac M1 or some Windows Surface laptops)\n\n## Example\n\n### MongoDB logs\n\n```console\n$ kubectl logs mongodb-0\n...\n{\"t\":{\"$date\":\"2022-09-20T17:56:28.918+00:00\"},\"s\":\"I\",  \"c\":\"NETWORK\",  \"id\":22943,   \"ctx\":\"listener\",\"msg\":\"Connection accepted\",\"attr\":{\"remote\":\"127.0.0.1:34990\",\"uuid\":\"611afe09-86aa-48d4-807f-f906eeda879e\",\"connectionId\":23325,\"connectionCount\":38}}\n{\"t\":{\"$date\":\"2022-09-20T17:56:28.919+00:00\"},\"s\":\"I\",  \"c\":\"NETWORK\",  \"id\":51800,   \"ctx\":\"conn2651307\",\"msg\":\"client metadata\",\"attr\":{\"remote\":\"127.0.0.1:3906\",\"client\":\"conn2651307\",\"doc\":{\"application\":{\"name\":\"MongoDB Shell\"},\"driver\":{\"name\":\"MongoDB Internal Client\",\"version\":\"5.0.10-9\"},\"os\":{\"type\":\"Linux\",\"name\":\"Ubuntu\",\"architecture\":\"x86_64\",\"version\":\"20.04\"}}}}\n{\"t\":{\"$date\":\"2022-09-20T17:56:28.928+00:00\"},\"s\":\"I\",  \"c\":\"NETWORK\",  \"id\":22944,   \"ctx\":\"conn2651307\",\"msg\":\"Connection ended\",\"attr\":{\"remote\":\"127.0.0.1:34976\",\"uuid\":\"628afe16-78aa-48d4-799f-f906eeda821e\",\"connectionId\":2212301,\"connectionCount\":37}}\n\n$ kubectl logs mongodb-0 | relog\n...\nSep-20 19:56 INF [NETWORK|listener   |22943] Connection accepted connectionCount=38 connectionId=23325 remote=127.0.0.1:34990 uuid=611afe09-86aa-48d4-807f-f906eeda879e\nSep-20 19:56 INF [NETWORK|conn2651307|51800] client metadata client=conn2651307 doc={\"application\":{\"name\":\"MongoDB Shell\"},\"driver\":{\"name\":\"MongoDB Internal Client\",\"version\":\"5.0.10-9\"},\"os\":{\"architecture\":\"x86_64\",\"name\":\"Ubuntu\",\"type\":\"Linux\",\"version\":\"20.04\"}} remote=127.0.0.1:3906\nSep-20 19:56 INF [NETWORK|conn2651307|22944] Connection ended connectionCount=37 connectionId=2212301 remote=127.0.0.1:34976 uuid=628afe16-78aa-48d4-799f-f906eeda821e\n```\n\n### Elasticsearch logs\n\n```console\n$ kubectl logs elasticsearch-master-0\n...\n{\"type\": \"server\", \"timestamp\": \"2022-08-03T10:37:08,390Z\", \"level\": \"INFO\", \"component\": \"o.e.x.s.a.TokenService\", \"cluster.name\": \"elasticsearch\", \"node.name\": \"elasticsearch-master-0\", \"message\": \"refresh keys\" }\n{\"type\": \"server\", \"timestamp\": \"2022-08-03T10:37:08,684Z\", \"level\": \"INFO\", \"component\": \"o.e.x.s.a.TokenService\", \"cluster.name\": \"elasticsearch\", \"node.name\": \"elasticsearch-master-0\", \"message\": \"refreshed keys\" }\n{\"type\": \"server\", \"timestamp\": \"2022-08-03T10:37:08,758Z\", \"level\": \"INFO\", \"component\": \"o.e.l.LicenseService\", \"cluster.name\": \"elasticsearch\", \"node.name\": \"elasticsearch-master-0\", \"message\": \"license [xxxxxxx-xxxx-xxxx-xxxx-xxxxxxx] mode [basic] - valid\" }\n{\"type\": \"server\", \"timestamp\": \"2022-09-05T16:06:17,918Z\", \"level\": \"WARN\", \"component\": \"r.suppressed\", \"cluster.name\": \"elasticsearch\", \"node.name\": \"elasticsearch-master-0\", \"message\": \"path: /_snapshot/minio-backups/_all, params: {repository=minio-backups, snapshot=_all}\", \"cluster.uuid\": \"loremipsum\", \"node.id\": \"foobar\" ,\n\"stacktrace\": [\"org.elasticsearch.transport.RemoteTransportException: [elasticsearch-master-2][127.0.0.1:9300][cluster:admin/snapshot/get]\",\n\"Caused by: org.elasticsearch.snapshots.SnapshotException: [minio-backups:es-snapshot-01062022-063000-foobar/heyo-mayo] Snapshot could not be read\",\n\"at org.elasticsearch.action.admin.cluster.snapshots.get.TransportGetSnapshotsAction.snapshots(TransportGetSnapshotsAction.java:208) ~[elasticsearch-7.12.1.jar:7.12.1]\",\n\"at org.elasticsearch.action.admin.cluster.snapshots.get.TransportGetSnapshotsAction.lambda$loadSnapshotInfos$1(TransportGetSnapshotsAction.java:159) ~[elasticsearch-7.12.1.jar:7.12.1]\",\n\"at org.elasticsearch.action.ActionRunnable.lambda$supply$0(ActionRunnable.java:47) ~[elasticsearch-7.12.1.jar:7.12.1]\",\n\"at org.elasticsearch.action.ActionRunnable$2.doRun(ActionRunnable.java:62) ~[elasticsearch-7.12.1.jar:7.12.1]\",\n\"at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:732) ~[elasticsearch-7.12.1.jar:7.12.1]\",\n\"at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:26) ~[elasticsearch-7.12.1.jar:7.12.1]\",\n\"at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) ~[?:?]\",\n\"at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) ~[?:?]\",\n\"at java.lang.Thread.run(Thread.java:831) [?:?]\" ] }\n\n$ kubectl logs elasticsearch-master-0 | relog\n...\nAug-03 12:37 INF refresh keys cluster.name=elasticsearch component=o.e.x.s.a.TokenService node.name=elasticsearch-master-0 type=server\nAug-03 12:37 INF refreshed keys cluster.name=elasticsearch component=o.e.x.s.a.TokenService node.name=elasticsearch-master-0 type=server\nAug-03 12:37 INF license [xxxxxxx-xxxx-xxxx-xxxx-xxxxxxx] mode [basic] - valid cluster.name=elasticsearch component=o.e.l.LicenseService node.name=elasticsearch-master-0 type=server\nSep-05 18:06 WRN path: /_snapshot/minio-backups/_all, params: {repository=minio-backups, snapshot=_all}\n\tSTACKTRACE\n\t==========\n\torg.elasticsearch.transport.RemoteTransportException: [elasticsearch-master-2][127.0.0.1:9300][cluster:admin/snapshot/get]\n\tCaused by: org.elasticsearch.snapshots.SnapshotException: [minio-backups:es-snapshot-01062022-063000-foobar/heyo-mayo] Snapshot could not be read\n\tat org.elasticsearch.action.admin.cluster.snapshots.get.TransportGetSnapshotsAction.snapshots(TransportGetSnapshotsAction.java:208) ~[elasticsearch-7.12.1.jar:7.12.1]\n\tat org.elasticsearch.action.admin.cluster.snapshots.get.TransportGetSnapshotsAction.lambda$loadSnapshotInfos$1(TransportGetSnapshotsAction.java:159) ~[elasticsearch-7.12.1.jar:7.12.1]\n\tat org.elasticsearch.action.ActionRunnable.lambda$supply$0(ActionRunnable.java:47) ~[elasticsearch-7.12.1.jar:7.12.1]\n\tat org.elasticsearch.action.ActionRunnable$2.doRun(ActionRunnable.java:62) ~[elasticsearch-7.12.1.jar:7.12.1]\n\tat org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:732) ~[elasticsearch-7.12.1.jar:7.12.1]\n\tat org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:26) ~[elasticsearch-7.12.1.jar:7.12.1]\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) ~[?:?]\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) ~[?:?]\n\tat java.lang.Thread.run(Thread.java:831) [?:?]\n\t cluster.name=elasticsearch cluster.uuid=loremipsum component=r.suppressed node.id=foobar node.name=elasticsearch-master-0 type=server\n```\n\n### Prometheus\n\n```console\n$ kubectl logs prometheus-server-5bcdc9849-84h8z\n...\nts=2022-09-20T17:30:02.249Z caller=compact.go:519 level=info component=tsdb msg=\"write block\" mint=1663689600021 maxt=1663693200000 ulid=xxxxxxxxxxxxxxxxxxxxxxxxxx duration=2.103117406s\nts=2022-09-20T17:30:02.265Z caller=db.go:1292 level=info component=tsdb msg=\"Deleting obsolete block\" block=xxxxxxxxxxxxxxxxxxxxxxxxxx\nts=2022-09-20T17:30:02.358Z caller=head.go:840 level=info component=tsdb msg=\"Head GC completed\" duration=93.435249ms\nts=2022-09-20T17:30:02.366Z caller=checkpoint.go:98 level=info component=tsdb msg=\"Creating checkpoint\" from_segment=1377 to_segment=1378 mint=1663693200000\nts=2022-09-20T17:30:03.550Z caller=head.go:1009 level=info component=tsdb msg=\"WAL checkpoint complete\" first=1377 last=1378 duration=1.184221371s\n\n$ kubectl logs prometheus-server-5bcdc9849-84h8z | relog\n...\nSep-20 19:30 INF compact.go:519 \u003e write block component=tsdb duration=2.103117406s maxt=1663693200000 mint=1663689600021 ulid=xxxxxxxxxxxxxxxxxxxxxxxxxx\nSep-20 19:30 INF db.go:1292 \u003e Deleting obsolete block block=xxxxxxxxxxxxxxxxxxxxxxxxxx component=tsdb\nSep-20 19:30 INF head.go:840 \u003e Head GC completed component=tsdb duration=93.435249ms\nSep-20 19:30 INF checkpoint.go:98 \u003e Creating checkpoint component=tsdb from_segment=1377 mint=1663693200000 to_segment=1378\nSep-20 19:30 INF head.go:1009 \u003e WAL checkpoint complete component=tsdb duration=1.184221371s first=1377 last=1378\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapplejag%2Frelog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapplejag%2Frelog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapplejag%2Frelog/lists"}