lightlogger
Live web dashboard for your Python logs — pip install, add one line, open localhost:4356. Zero dependencies.
Install
pip install lightlogger
import lightlogger
lightlogger.start()
lightlogger.info("user logged in")
That's it — open http://127.0.0.1:4356 and watch it stream in live, in a dark, searchable dashboard. No config file, no separate server process to run, no npm install.
Your existing logging calls show up too, with zero code changes:
lightlogger.start(capture_logging=True) # the default
import logging
logging.getLogger("some.third.party.lib").warning("disk almost full") # appears in the UI automatically
And when one log message is really four related operations, group them:
with lightlogger.group("process_order #4821"):
lightlogger.info("validating cart")
lightlogger.info("charging payment", data={"amount": 49.99})
with lightlogger.group("send_notifications"):
lightlogger.info("email sent")
lightlogger.info("sms sent")
They render as a collapsible tree — click to expand, nested groups indent, a red badge appears if anything inside failed.
Features
| Live streaming | Server-Sent Events, not polling — logs appear the instant they're written |
Zero-code logging capture |
Attaches to the root logger; your own and third-party libraries' logs show up automatically |
| Nested log grouping | with lightlogger.group(name): — collapsible, nested, thread- and async-safe |
| Search & level filter | Client-side, instant, works across grouped and ungrouped logs alike |
| Pause / Resume | Freeze the view to read something — nothing is dropped, a counter shows what's waiting |
| Click to expand | File, line, logger name, and pretty-printed JSON data for any entry |
| Download as JSON | One click, the full current backlog |
| Bounded memory | A fixed-size ring buffer — lightlogger can never be the reason your app runs out of RAM |
| Zero dependencies | Python standard library only, from the HTTP server to the JSON encoding |
Built-in help
Forgot the API? It's in the package, not just this README:
>>> import lightlogger
>>> lightlogger.help()
Prints a full cheatsheet to your terminal — every function, one-line descriptions, tiny examples, the capture_logging gotcha, no need to leave your shell. And once the dashboard is running, open http://127.0.0.1:4356/help for the same reference as a page, with copyable code blocks.
Why lightlogger
Debugging a running Python process usually means one of three things: print() statements you'll forget to remove, a terminal window full of scrolling text you can't search, or reaching for a heavyweight observability platform to answer a question that takes ten seconds to answer once you can actually see your logs.
We looked at what else exists. Logdy is a Go binary you install separately from your app. Chronologer needs its own server process. cutelog needs PyQt. Logfire is closed-source and cloud-hosted. lnav and klp are terminal-only. Django and Flask debug toolbars only work inside those specific frameworks, in that specific request/response cycle.
None of them do the one thing that actually matches how a Python developer debugs: import, call one function, and get a live web page — from inside the process you're already running, with no extra install, no extra service, no dependencies to audit. That's the gap lightlogger fills. And once your logs have a real UI instead of a scrolling terminal, grouping related operations into a collapsible tree stops being a nice-to-have — it's the difference between reading a wall of text and reading a story.
Security
lightlogger binds to 127.0.0.1 only, by default — nothing is reachable outside your machine unless you explicitly pass host="0.0.0.0" (which prints a loud warning when you do). It's a local development tool, not a production observability system: don't run it against a public-facing process, and don't leave it running longer than your debugging session needs.
Contributing
Contributions are welcome — see CONTRIBUTING.md for the ground rules (short version: zero dependencies, stay on stdlib, keep it simple). Bug reports and PRs both go through GitHub Issues.
License
MIT — see LICENSE.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lightlogger-0.1.0.tar.gz.
File metadata
- Download URL: lightlogger-0.1.0.tar.gz
- Upload date:
- Size: 309.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a4c3ed6fd04addb24a6769828ca10faa3a00544067386d383007400f721c3471
|
|
| MD5 |
8afa0ba9bc28ef330c511e266c4ddf87
|
|
| BLAKE2b-256 |
db87e47d05d124e20dbde165a4ee9c3e0c7ba6c9a42e97f66488cd64698dee9e
|
Provenance
The following attestation bundles were made for lightlogger-0.1.0.tar.gz:
Publisher:
publish.yml on Rahuwale123/lightlogger
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
lightlogger-0.1.0.tar.gz -
Subject digest:
a4c3ed6fd04addb24a6769828ca10faa3a00544067386d383007400f721c3471 - Sigstore transparency entry: 2768012881
- Sigstore integration time:
-
Permalink:
Rahuwale123/lightlogger@e10a1bd6c62ab8c78169596a959b180939373e74 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/Rahuwale123
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@e10a1bd6c62ab8c78169596a959b180939373e74 -
Trigger Event:
release
-
Statement type:
File details
Details for the file lightlogger-0.1.0-py3-none-any.whl.
File metadata
- Download URL: lightlogger-0.1.0-py3-none-any.whl
- Upload date:
- Size: 25.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5da356fdfcfd4daf1a98df41eaaeef02e19c55ab3bec7e64f8feac8660b791fe
|
|
| MD5 |
c50318cdaa743b1f87cabacafb99655e
|
|
| BLAKE2b-256 |
2749cc70122c980849fa424611a9cc9e6d2d9e580f7e26c94e547723dfd26b1e
|
Provenance
The following attestation bundles were made for lightlogger-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on Rahuwale123/lightlogger
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
lightlogger-0.1.0-py3-none-any.whl -
Subject digest:
5da356fdfcfd4daf1a98df41eaaeef02e19c55ab3bec7e64f8feac8660b791fe - Sigstore transparency entry: 2768012931
- Sigstore integration time:
-
Permalink:
Rahuwale123/lightlogger@e10a1bd6c62ab8c78169596a959b180939373e74 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/Rahuwale123
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@e10a1bd6c62ab8c78169596a959b180939373e74 -
Trigger Event:
release
-
Statement type: