A clumsy, heavyweight nimble, lightweight log server and web client, bundled in a handy cross-platform binary.
We use electron
to bundle a node.js server and a web client running in Chromium.
The server listens for logs on incoming websocket
connections. It outputs these logs to the web client using socket.io
.
The web client takes these socket.io
events and manipulates DOM elements to present logs. Each connected client gets its own tab in the web-client.
After establishing a websocket connection, a client can send events to natural-log. All events are text-based and are in the form:
{Event}:Payload
Identify - This event gives a readable name to a client and is reflected in that client's tab. Eg - {Identify}:Joe's Laptop
Info - Sends an info level message. Eg - {Info}:This is an info log!
Debug - Sends an info level message. Eg - {Debug}:This is a debug log!
Warn - Sends an info level message. Eg - {Warn}:This is a warning log!
Error - Sends an info level message. Eg - {Error}:This is an error log!
Checkout the naturallog-examples project for client libraries.
For development:
npm install -g electron
npm install && electron .
For releases:
npm run package-win package-mac package-linux
Find that here.
Why doesn't it do this one thing? Probably because I didn't think about it. Make a feature request!
Why web tech? Because the venn-diagram of (Cross Platform Tech) + (Decent UI) is horrifying. Looking at you Java.
Can I run the natural-log server somewhere and a natural-log client in a browser? Yes! Details to come. Electron really has just bundled Node.js and Chromium. Look at the source if you're impatient!