Skip to content

beNative/LogViewer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LogViewer

LogViewer is a general purpose message viewer for log messages with support for multiple sources to receive messages from. The application is a modular design which can easily be extended to support other message types and transfer protocols.

Currently supported are:

  • Windows IPC (using WM_COPY messages)
  • ZeroMQ (PUB/SUB socket) for logging over the network. It demonstrates the brilliant performance of ZMQ sockets.

Currently in progress:

  • Serial port (native RS232, USB or Bluetooth)
  • Windows OutputDebugString API
  • MQTT (commonly used by IOT devices)

Each of these receivers support multiple subscribers for which messages can be displayed in a dedicated logviewer.

I compiled a pre-release version to play with in the releases section. I included the unit test executable that can be used to generate some sample logging.

Screenshots

Message viewer

LogViewer

LogViewer

LogViewer

LogViewer

Call Stack

CallStack

Watch List

Watch list with value history support. The history list can be automatically synchronize with the message list to monitor the value at any given time.

WatchList

Message Filter

Client side

MessageFilterClient

Source side

MessageFilterSource

Settings Dialog

Fully customizable message display settings.

Settings

UML diagrams

In the Documents folder you will find some UML diagrams which reveal the main application architecture.

ILogViewerManager TLogViewerSettings

There is also a mindmap with a technical overview of the application: LogViewer.xmind You need XMind to open this document. You can download a free version from the main website: XMind.

I made an image snapshot of the mindmap that you can open here: LogViewer.Mindmap.png

ILogger API

The DDuce library provides the Logger module to add logging to your application (Delphi/FreePascal-Lazarus). The DDuce demo application demonstrates the currently supported message types.

Logger demo

More examples can be found in my other Delphi projects listed on Github. LogViewer is also able to emit log messages by itself which can be monitored in another instance. Therefore the source instance needs to have the setting 'Emit log messages' enabled. The other instance needs to be started in 'debug mode' which also can be configured in the application settings.

A subset of this API has been ported to FPC/Lazarus. Take a look at my Lazarus projects to see examples how they are used.

Features currently supported using the ILogger interface methods

  • Info/Warning and Error messages
  • Method tracking with stack display showing execution times
  • Screenshot capture
  • Conditional logging
  • Checkpoints
  • Counters
  • Watches + value history support
  • Datasets
  • Bitmaps, and various other image formats
  • Objects
  • Components
  • Native value types with type information
  • Text with suppport for multiple highlighters
  • Actions
  • Up to 32 user-definable logging levels

Libraries used

The Object Pascal (Delphi) sources depend on the following open source libraries and components: