What it is
NebuLog streams an application's logs to a browser console in real time. The application writes to the standard .NET ILogger; NebuLog shows every record within about a tenth of a second — filterable, searchable, and correlated by trace across services.
It began in 2018 as MyLogger, a personal experiment, and was rewritten as v2 in October 2026 on .NET 10, React 19 and the OpenTelemetry standard. It is open source under the Apache 2.0 licence and is not a commercial product: it is here because it is the most direct way to show how we build software.
How to try it
- Open nebulog.imady.co.nz and choose Continue as demo visitor. No account is needed; the visitor role is read-only.
- Pick one of the eight guided demos. Each opens a small shop application in one window and a pre-filtered console in the other.
- Press a button in the shop. Every button is exactly one HTTP request, and its TraceId is shown so you can find it in the console.
- Press Checkout and watch one request travel across two services under a single trace.
One scenario is worth singling out: the same request, served once by a Minimal API and once by an MVC pipeline, produces 15 framework log entries in one and 55 in the other. You can watch the difference side by side.

What is inside
- Two ways in. A NebuLog exporter over SignalR for the lowest latency and two-way commands, or the stock OTLP exporter from any language — in which case your code does not depend on NebuLog at all.
- Built on the standard. The application side follows OpenTelemetry completely, so the same application can send its logs to NebuLog and to the .NET Aspire Dashboard at the same time.
- Two-way. The console can send commands back to a running application, and the application can report custom live statistics.
- Secure by default. Cookie sessions for people, API keys for programs, four roles, keys stored only as hashes, and log bodies always rendered as text, never as HTML.
- Production-shaped deployment. Containers run as a non-root user on a read-only filesystem, with immutable image tags so an upgrade or a rollback is a one-line change.

Measured, not claimed
Figures from the v2.0 evaluation on 5 October 2026; methods and sources are in the public repository.
| Sustained ingest | 10,077 entries per second for five seconds, zero rejections |
| Producer-to-browser latency | p50 109 ms, p95 115 ms |
| Browser console at 100,000 buffered entries | smooth scrolling, about 51 rows in the page |
| Automated tests | 324 (246 .NET, 78 front end) |
Why it is on this site
The tool matters less than the way it was delivered. v1 served as the baseline, so every requirement was concrete from the first day; the work was carried out by AI agents with defined roles and written acceptance criteria, each checking the others' output; and v2.0 went live two days after analysis began. The same approach applies to upgrading software a business already depends on.
