Logs
The Logs page (sidebar → Logs) shows entries emitted by the app for debugging and support. Entries are filtered by your global log level and any per-component overrides, and a copy is also written to a persistent file on disk so logs survive app restarts.
Where the file lives
The file is named zmninja-ng.log and lives in the per-app log directory chosen by the OS:
Platform |
Path |
|---|---|
macOS (Electron) |
|
Windows (Electron) |
|
Linux (Electron) |
|
iOS |
App sandbox ( |
Android |
App-private data directory ( |
Web (browser dev only) |
No persistence. |
Format and retention
The file is NDJSON: one JSON object per line. Plain-text rendering happens on Share, so the file you send to support is human-readable.
Capped at 10,000 entries. When the cap is hit, the oldest half is dropped automatically.
Lines that fail to parse (e.g. from a crash mid-write) are skipped silently when the file is read back.
Filtering and log levels
The on-disk file mirrors the in-memory Logs view, so anything filtered out by your level / component settings is not persisted either. To configure:
Global level and per-component overrides: Settings → Advanced → Component Logs (collapsible section). The global level sets the floor; per-component selectors override it for individual loggers.
The Logs page itself only filters which entries are displayed. The component multi-select at the top of the page narrows the visible entries; it does not change the level being recorded.
Lowering the level (e.g. to DEBUG for a specific component) writes more to disk; raising it writes less.
Live console output
The Logs page mirrors what the in-app console shows. If you want to watch raw console output as it streams (including stack traces and source-mapped errors that don’t make it into the structured logger), open the developer console, see How do I open the developer console on the desktop app? in the FAQ.