Ninja Scroll Log Engine

Ninja Scroll Log Engine


The logging engine was a strong selling point of IO Ninja since day one. To understand why it stands out, you have to think how most sniffers or monitors represent data.

Usually there is a "master list" of events, such as "incoming packet" or "error message", and then there is "details view". The user has to select the event in "master list" and then inspect event details in "details view".

The reason for this design of user interface is obvious: it's easy to implement. While this interface is acceptable, there are clearly situations when a single continuous log sheet (think of a huge HTML page) would be much easier to follow.

So, why not use HTML? For a tiny log, that would have been fine. But unfortunately HTML is not suitable for displaying really huge pages — and logs of IO communications can grow to many gigabytes in size. So, we needed our own engine.

No other terminal emulator or packet analyzer can interleave binary data (in text or hex-view forms) with textual messages in potentially huge logs, providing a single, clean, searchable log sheet. IO Ninja could do it since the original release, and it got even better in version 3.

  • Interleaving binary and textual messages in a single continuous log sheet;
  • Representing binary data in plain-text or in hex-view form;
  • Configurable merging (including setting a threshold for time difference);
  • Showing merged packet boundaries;
  • Expanding/collapsing;
  • Multiple modes of copying binary data:
    • As hex;
    • As text;
    • As hex-view;
    • As C array;
    • As C literal;
    • As Jancy hex-literal;
  • Saving the selected block of binary data into a file;
  • Displaying offset and length of the selection;
  • Automatic calculation of checksums, local throughputs, and other statistics.