Skip to content

thegoldenmule/naturallog

Repository files navigation

Logo

Natural-Log

A clumsy, heavyweight nimble, lightweight log server and web client, bundled in a handy cross-platform binary.

Screenshot

Tech

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.

Protocol

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!

Usage

Checkout the naturallog-examples project for client libraries.

Build and Run

For development:

npm install -g electron npm install && electron .

For releases:

npm run package-win package-mac package-linux

Roadmap

Find that here.

Q&A

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!