A modern, feature-rich desktop application for monitoring, filtering, and analyzing syslog messages in real-time. Built with WPF and .NET 10, SyslogHmi provides a comprehensive graphical interface for receiving syslog messages over TCP and UDP protocols, storing them in a SQLite database, and managing visual formatting rules.
Clone the Repository
git clone https://github.com/dilandau2001/SyslogHmi.git
cd SyslogApp
Open in Visual Studio
SyslogHmi.sln in Visual Studio 2022 or laterBuild the Solution
dotnet build
Run the Application
dotnet run --project SyslogHmi/SyslogHmi.csproj
Alternatively, use the compiled executable from the Release folder.
Start the Application
SyslogHmi.exeConfigure Network Ports
Send Syslog Messages
Monitor Messages
The toolbar at the top of the application provides network settings:
Both TCP and UDP listeners operate concurrently, allowing messages from both protocols to be received simultaneously.
The Messages tab includes a comprehensive filtering panel:
Filters are applied in real-time; matching messages are displayed in the filtered view below.
The Color Rules tab allows creation of visual formatting rules:
Create New Rule
Define Conditions
Set Visual Properties
Manage Priority
Persistence
The SQL Analysis tab provides direct database access:
Execute Custom Queries
SyslogMessages table directlyAvailable Columns in the database:
Id: Message identifierTimestamp: Original message timestampHostname: Source hostnameAppName: Application/process nameProcessId: Process identifierSeverity: Numeric severity (0-7)Facility: Numeric facility (0-23)SeverityName: Human-friendly severityFacilityName: Human-friendly facilityMessage: Short message textFullMessage: Complete original messageReceivedTime: Time received by applicationExample Queries
-- Count messages by severity
SELECT SeverityName, COUNT(*) FROM SyslogMessages GROUP BY SeverityName
-- Find errors from specific host
SELECT * FROM SyslogMessages WHERE Hostname = 'server01' AND Severity <= 3
-- Messages in last hour
SELECT * FROM SyslogMessages WHERE ReceivedTime > datetime('now', '-1 hour')
SyslogHmi follows the MVVM (Model-View-ViewModel) design pattern with clear separation of concerns:
Services Layer
SyslogListener: Dual-protocol network listener (TCP/UDP) for message receptionDatabaseService: SQLite-based persistence layer for messages and rulesSyslogQueueManager: Batch queue management for efficient message processingSyslogMessageSender: Test message generator for validationView Model Layer
MainViewModel: Orchestrates overall application flow and message managementFilterViewModel: Manages filter criteria and applies filtering logicColorRuleViewModel: Manages color rules collection and operationsColorRuleFormViewModel: Handles rule creation/editing form stateSqlAnalysisViewModel: Manages SQL query execution and resultsModels
SyslogMessage: Represents a parsed syslog message with all metadataColorRule: Defines visual formatting rules and conditionsColorCondition: Individual condition within a color ruleColorFormat: Visual properties (colors, font weights)Views (WPF)
MainWindow: Primary application window and layoutMessagesView: Message display and filtering interfaceColorRulesView: Color rule management interfaceSqlAnalysisView: Database query interfaceSyslogHmi/
├── Models/
│ ├── SyslogMessage.cs # Core syslog message model
│ ├── ColorRule.cs # Color rule definition
│ ├── ColorCondition.cs # Rule condition
│ ├── ColorFormat.cs # Visual formatting properties
│ └── ColorItem.cs
├── Services/
│ ├── SyslogListener.cs # TCP/UDP network listener
│ ├── DatabaseService.cs # SQLite persistence
│ ├── SyslogQueueManager.cs # Message batch processing
│ ├── SyslogMessageSender.cs # Test message generator
│ └── IDatabaseService.cs # Interface definition
├── ViewModels/
│ ├── MainViewModel.cs # Main orchestrator
│ ├── FilterViewModel.cs # Filtering logic
│ ├── ColorRuleViewModel.cs # Rule management
│ ├── ColorRuleFormViewModel.cs # Form state management
│ ├── SqlAnalysisViewModel.cs # Database query execution
│ ├── ViewModelBase.cs # MVVM base class
│ ├── RelayCommand.cs # Command implementation
│ ├── BulkObservableCollection.cs # Optimized collection
│ ├── FacilityCheckItem.cs # Facility filter item
│ └── SeverityOptionViewModel.cs # Severity option item
├── Views/
│ ├── MainWindow.xaml(.cs) # Main application window
│ ├── MessagesView.xaml(.cs) # Message display view
│ ├── ColorRulesView.xaml(.cs) # Color rules interface
│ └── SqlAnalysisView.xaml(.cs) # SQL analysis interface
├── Converters/
│ ├── UtcToLocalConverter.cs # DateTime conversion
│ ├── FriendlyColorNameToBrushConverter.cs
│ ├── StringToColorBrushConverter.cs
│ ├── NullToVisibilityConverter.cs # Null-to-visibility binding
│ └── SingleLineConverter.cs
├── Helpers/
│ └── ColorHelper.cs # Color utilities
├── Properties/
│ └── Resources.resx # Application resources
├── App.xaml(.cs) # Application startup
└── SyslogHmi.csproj # Project configuration
The application is optimized for high-volume syslog reception:
# Clone and navigate
git clone https://github.com/dilandau2001/SyslogHmi.git
cd SyslogApp
# Restore and build
dotnet restore
dotnet build
# Run in debug mode
dotnet run --project SyslogHmi/SyslogHmi.csproj
The SQLite database is automatically initialized on first run. The main table structure includes:
The project follows standard C# conventions:
If you receive a "port already in use" error:
%APPDATA%\SyslogHmi\syslog_messages.db.db file to reset (starts fresh on next run)This project is provided as-is for use. Please refer to the repository for specific license terms.
For issues, feature requests, or contributions, please visit: GitHub Repository
Version: 1.0
Platform: Windows (.NET 10)
Last Updated: 2024
C#
98.9%
Smalltalk
1.1%
A modern, feature-rich desktop application for monitoring, filtering, and analyzing syslog messages in real-time. Built with WPF and .NET 10, SyslogHmi provides a comprehensive graphical interface for receiving syslog messages over TCP and UDP protocols, storing them in a SQLite database, and managing visual formatting rules.
Clone the Repository
git clone https://github.com/dilandau2001/SyslogHmi.git
cd SyslogApp
Open in Visual Studio
SyslogHmi.sln in Visual Studio 2022 or laterBuild the Solution
dotnet build
Run the Application
dotnet run --project SyslogHmi/SyslogHmi.csproj
Alternatively, use the compiled executable from the Release folder.
Start the Application
SyslogHmi.exeConfigure Network Ports
Send Syslog Messages
Monitor Messages
The toolbar at the top of the application provides network settings:
Both TCP and UDP listeners operate concurrently, allowing messages from both protocols to be received simultaneously.
The Messages tab includes a comprehensive filtering panel:
Filters are applied in real-time; matching messages are displayed in the filtered view below.
The Color Rules tab allows creation of visual formatting rules:
Create New Rule
Define Conditions
Set Visual Properties
Manage Priority
Persistence
The SQL Analysis tab provides direct database access:
Execute Custom Queries
SyslogMessages table directlyAvailable Columns in the database:
Id: Message identifierTimestamp: Original message timestampHostname: Source hostnameAppName: Application/process nameProcessId: Process identifierSeverity: Numeric severity (0-7)Facility: Numeric facility (0-23)SeverityName: Human-friendly severityFacilityName: Human-friendly facilityMessage: Short message textFullMessage: Complete original messageReceivedTime: Time received by applicationExample Queries
-- Count messages by severity
SELECT SeverityName, COUNT(*) FROM SyslogMessages GROUP BY SeverityName
-- Find errors from specific host
SELECT * FROM SyslogMessages WHERE Hostname = 'server01' AND Severity <= 3
-- Messages in last hour
SELECT * FROM SyslogMessages WHERE ReceivedTime > datetime('now', '-1 hour')
SyslogHmi follows the MVVM (Model-View-ViewModel) design pattern with clear separation of concerns:
Services Layer
SyslogListener: Dual-protocol network listener (TCP/UDP) for message receptionDatabaseService: SQLite-based persistence layer for messages and rulesSyslogQueueManager: Batch queue management for efficient message processingSyslogMessageSender: Test message generator for validationView Model Layer
MainViewModel: Orchestrates overall application flow and message managementFilterViewModel: Manages filter criteria and applies filtering logicColorRuleViewModel: Manages color rules collection and operationsColorRuleFormViewModel: Handles rule creation/editing form stateSqlAnalysisViewModel: Manages SQL query execution and resultsModels
SyslogMessage: Represents a parsed syslog message with all metadataColorRule: Defines visual formatting rules and conditionsColorCondition: Individual condition within a color ruleColorFormat: Visual properties (colors, font weights)Views (WPF)
MainWindow: Primary application window and layoutMessagesView: Message display and filtering interfaceColorRulesView: Color rule management interfaceSqlAnalysisView: Database query interfaceSyslogHmi/
├── Models/
│ ├── SyslogMessage.cs # Core syslog message model
│ ├── ColorRule.cs # Color rule definition
│ ├── ColorCondition.cs # Rule condition
│ ├── ColorFormat.cs # Visual formatting properties
│ └── ColorItem.cs
├── Services/
│ ├── SyslogListener.cs # TCP/UDP network listener
│ ├── DatabaseService.cs # SQLite persistence
│ ├── SyslogQueueManager.cs # Message batch processing
│ ├── SyslogMessageSender.cs # Test message generator
│ └── IDatabaseService.cs # Interface definition
├── ViewModels/
│ ├── MainViewModel.cs # Main orchestrator
│ ├── FilterViewModel.cs # Filtering logic
│ ├── ColorRuleViewModel.cs # Rule management
│ ├── ColorRuleFormViewModel.cs # Form state management
│ ├── SqlAnalysisViewModel.cs # Database query execution
│ ├── ViewModelBase.cs # MVVM base class
│ ├── RelayCommand.cs # Command implementation
│ ├── BulkObservableCollection.cs # Optimized collection
│ ├── FacilityCheckItem.cs # Facility filter item
│ └── SeverityOptionViewModel.cs # Severity option item
├── Views/
│ ├── MainWindow.xaml(.cs) # Main application window
│ ├── MessagesView.xaml(.cs) # Message display view
│ ├── ColorRulesView.xaml(.cs) # Color rules interface
│ └── SqlAnalysisView.xaml(.cs) # SQL analysis interface
├── Converters/
│ ├── UtcToLocalConverter.cs # DateTime conversion
│ ├── FriendlyColorNameToBrushConverter.cs
│ ├── StringToColorBrushConverter.cs
│ ├── NullToVisibilityConverter.cs # Null-to-visibility binding
│ └── SingleLineConverter.cs
├── Helpers/
│ └── ColorHelper.cs # Color utilities
├── Properties/
│ └── Resources.resx # Application resources
├── App.xaml(.cs) # Application startup
└── SyslogHmi.csproj # Project configuration
The application is optimized for high-volume syslog reception:
# Clone and navigate
git clone https://github.com/dilandau2001/SyslogHmi.git
cd SyslogApp
# Restore and build
dotnet restore
dotnet build
# Run in debug mode
dotnet run --project SyslogHmi/SyslogHmi.csproj
The SQLite database is automatically initialized on first run. The main table structure includes:
The project follows standard C# conventions:
If you receive a "port already in use" error:
%APPDATA%\SyslogHmi\syslog_messages.db.db file to reset (starts fresh on next run)This project is provided as-is for use. Please refer to the repository for specific license terms.
For issues, feature requests, or contributions, please visit: GitHub Repository
Version: 1.0
Platform: Windows (.NET 10)
Last Updated: 2024
C#
98.9%
Smalltalk
1.1%