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.
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.
Fully customizable message display settings.
In the Documents folder you will find some UML diagrams which reveal the main application architecture.
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
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.
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.
- 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
The Object Pascal (Delphi) sources depend on the following open source libraries and components: