Streamlit UI for chunking Ubuntu journalctl logs (initially) into fixed time intervals to identify burstiness. Allows quick inspection of each interval, drilling down to the granularity of individual logs.
- Date/time range + interval size (seconds).
- Caches fetched logs and only requests missing ranges.
- Interval table shows first log + count with heat-style progress bar.
- One-click details modal with full logs for the selected interval.
- Auto-focuses on the first interval with non-zero logs.
- Debug logging to
syslog_viewer.login the project directory.
- Linux with
journalctlavailable (systemd). - Python 3.9+ recommended.
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtstreamlit run app.pyOr use the wrapper to auto-open the browser:
./run.sh- Pick a date range.
- Use the time sliders to select start/end times (12‑hour clock).
- Set interval seconds (default 10).
- Click Fetch logs.
- Use the 🔍 checkbox column to open interval details.
journalctl may require elevated permissions on some systems. If you get empty results or permission errors, run Streamlit with sufficient access or add your user to the systemd-journal group.
- No logs found: the selected range may not exist in the journal or lacks permissions.
- Partial availability warning: the journal only has logs for part of the requested range.
- Port already in use: stop the existing Streamlit process or change
PORTinrun.sh.
- The interval detail modal uses
st.dialogif available; otherwise it falls back to an expander. - The View column is implemented via
st.data_editorto allow click-to-open without slow row selection. - Log text is sanitized to prevent rendering issues from control characters.
- UI tweaks for dialog width/scrollbars are applied via CSS in
app.py.
