{"id":16857493,"url":"https://github.com/renbou/loggo","last_synced_at":"2025-04-11T07:45:26.146Z","repository":{"id":223010909,"uuid":"597683771","full_name":"renbou/loggo","owner":"renbou","description":"Painless to setup lightweight log aggregation system","archived":false,"fork":false,"pushed_at":"2024-02-19T10:09:18.000Z","size":877,"stargazers_count":13,"open_issues_count":7,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-25T05:18:54.935Z","etag":null,"topics":["logging","observability"],"latest_commit_sha":null,"homepage":"","language":"Go","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/renbou.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":"2023-02-05T10:14:58.000Z","updated_at":"2024-06-25T10:54:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"468918a0-7b20-4dd5-b739-2319d4abe265","html_url":"https://github.com/renbou/loggo","commit_stats":null,"previous_names":["renbou/loggo"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/renbou%2Floggo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/renbou%2Floggo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/renbou%2Floggo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/renbou%2Floggo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/renbou","download_url":"https://codeload.github.com/renbou/loggo/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248359352,"owners_count":21090514,"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":["logging","observability"],"created_at":"2024-10-13T14:08:11.749Z","updated_at":"2025-04-11T07:45:26.123Z","avatar_url":"https://github.com/renbou.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Loggo\n\nLoggo is an incredibly lightweight log aggregation system which is stupidly simple to setup and use. If you, like me, are tired from the complexity of setup and configuration of systems such as Graylog, Grafana Loki, and others, then Loggo should suit you pretty well.\n\n![Preview](/docs/preview.png)\n\n## Getting started\n\nTo understand how easy it is to setup and use loggo, I suggest checking out the [example](/example), which sets up a server instance and runs the loggo client alongside the app like this:\n\n```yaml\n# compose.yml\nservices:\n  ...\n  loggo:\n    image: ghcr.io/renbou/loggo:latest\n    ports:\n      - \"20080:20080\" # web panel for log-viewing\n```\n\n```Dockerfile\n# Dockerfile\nFROM ghcr.io/renbou/loggo:latest as loggo\nFROM python:3.11.7-slim-bookworm\n...\nCOPY --from=loggo /bin/loggo /bin/loggo\nCMD poetry run app | loggo pigeon --hq.addr loggo:20081\n```\n\nLoggo containers and binaries can be built for any platform, so you aren't even forced to use it inside containers. As long as you can launch the client process alongside the process from which you want to collect logs, you should be good to go!\n\n## Design\n\nLoggo was designed and built with a few key points in mind:\n\n- Painless to run, which is crucial, in my opinion, for simple home-grown and other small/medium projects;\n- Performant enough to collect logs from multiple sources, and then be able to filter through them;\n- Fault-tolerant, so client logs wouldn't be lost if the server goes down.\n\nTo suit the storage-related needs, Loggo uses the awesome embeddable [BadgerDB](https://github.com/dgraph-io/badger) for storing logs in a flattened format with timestamps as keys, all of which allows filtering old logs and streaming newly incoming filtered logs. For transportation from the client to the server, gRPC streams with acknowledgements and reestablishment are used, which means that logs shouldn't be lost in any realistic case. Finally, to make this whole system easily usable, the gRPC-web API allows viewing and streaming logs filtered using an expression language with a Graylog-like syntax.\n\n## Roadmap\n\nWith the current state of Loggo it's safe to say that usability-related tasks are more high-priority than others, such as performance, but since Loggo was designed and is already built with performance in mind, there shouldn't be any overly difficult to overcome bottlenecks. That being said, here are some of the features I'd like to support in Loggo in the near future:\n\n- Configuring the whole system through the web interface, so that there's no need to touch the YAML file;\n- More ways to receive logs on the client, e.g. files, syslog, etc;\n- Indexing for custom log fields in the DB, so that most searches can be filtered faster.\n\nOverall Loggo progress can be tracked through the [issues](https://github.com/renbou/loggo/issues) and linked [project](https://github.com/users/renbou/projects/2).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frenbou%2Floggo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frenbou%2Floggo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frenbou%2Floggo/lists"}