Harvesters watch log files for changes, send new log messages to the server, which broadcasts to web clients. Log messages are tagged with stream, node, and log level information based on user configuration.
Log.io has no persistence layer. Harvesters are informed of file changes via inotify, and log messages hop from harvester to server to web client via TCP and socket.io, respectively.
Log.io uses a stateless TCP API to receive log messages.
Writing a third party harvester is easy. Open a TCP connection to the server and begin writing properly formatted messages to the socket.