LoggerPro - Modern Logging Framework for Delphi
What is LoggerPro?
LoggerPro is a free, open-source logging framework for Delphi that provides asynchronous, high-performance logging with 20+ built-in appenders. It’s the most comprehensive logging solution for Delphi applications, supporting everything from simple file logging to enterprise-grade distributed logging with Redis, ElasticSearch, and syslog.
Key Features
- Fully Asynchronous - All appenders and log writers are async by default
- 20+ Built-in Appenders - File, Console, Database, Redis, ElasticSearch, Email, Syslog, and more
- Pluggable Architecture - Easy to add/remove appenders at runtime
- Cross-Platform - Windows and Linux support (from Delphi 10.2 Tokyo)
- Thread-Safe - Custom
TThreadSafeQueue<T>implementation - Customizable - Custom log renderers via
ILogItemRenderers - Tag Support - Organize logs by tags for filtering
Quick Start
Simple Global Logger
uses LoggerPro.GlobalLogger;
begin
Log.Debug('Application started', 'main');
Log.Info('User logged in: %s', ['john@example.com'], 'auth');
Log.Warn('Cache miss for key: %s', ['user:123'], 'cache');
Log.Error('Database connection failed', 'database');
Log.Fatal('Critical system failure', 'system');
end;
Custom Appenders Configuration
uses
LoggerPro,
LoggerPro.FileAppender,
LoggerPro.OutputDebugStringAppender,
LoggerPro.ConsoleAppender;
var
Log: ILogWriter;
begin
Log := BuildLogWriter([
TLoggerProFileAppender.Create(5, 1024, 'logs'), // 5 files, 1MB each
TLoggerProConsoleAppender.Create,
TLoggerProOutputDebugStringAppender.Create
]);
Log.Info('Server started on port %d', [8080], 'server');
end;
Built-in Appenders
File & Console
| Appender | Description |
|---|---|
TLoggerProFileAppender |
Rolling file appender with size/count limits |
TLoggerProConsoleAppender |
Colored console output |
TLoggerProOutputDebugStringAppender |
Windows OutputDebugString |
TVCLMemoLogAppender |
VCL TMemo component |
TVCLListViewAppender |
VCL TListView component |
TLoggerProJSONLFileAppender |
JSONL format file appender |
Database
| Appender | Description |
|---|---|
TLoggerProADOAppender |
Microsoft ADO databases |
TLoggerProFireDACAppender |
FireDAC databases |
TLoggerProElasticSearchAppender |
ElasticSearch integration |
Network & Messaging
| Appender | Description |
|---|---|
TLoggerProRedisAppender |
Redis with LogsViewer support |
TLoggerProSyslogAppender |
RFC 5424 compliant syslog |
TLoggerProUDPSyslogAppender |
UDP syslog transport |
TLoggerProNSQAppender |
NSQ message queue |
TLoggerProRESTAppender |
REST API with extended info |
TLoggerProEmailAppender |
Email notifications |
System & Special
| Appender | Description |
|---|---|
TLoggerProEventLogAppender |
Windows Event Log |
TLoggerProMemoryAppender |
In-memory buffer |
TLoggerProDecoratorAppender |
Decorator/filter pattern |
TLoggerProDMSContainerAppender |
DMSContainer EventStreams |
Log Levels
LoggerPro supports 5 log levels (6 with v2.0.0):
Log.Debug('Detailed debug information', 'tag');
Log.Info('General information', 'tag');
Log.Warn('Warning conditions', 'tag');
Log.Error('Error conditions', 'tag');
Log.Fatal('Critical failures', 'tag'); // New in v2.0.0
File Appender with Rolling
// Create file appender with:
// - Max 10 log files
// - Max 2MB per file
// - Stored in 'logs' folder
// - Custom tag for filename
var FileAppender := TLoggerProFileAppender.Create(
10, // MaxBackupFileCount
2048, // MaxFileSizeInKB
'logs', // LogsFolder
[], // FileAppenderOptions
'myapp' // Tag (optional, for filename)
);
Redis Appender with LogsViewer
uses LoggerPro.RedisAppender;
var RedisAppender := TLoggerProRedisAppender.Create(
'localhost', // Redis host
6379 // Redis port
);
Log := BuildLogWriter([RedisAppender]);
Use with the included LogsViewer application to aggregate and view logs from multiple services in real-time.
Custom OnLogRow Callback
var FileAppender := TLoggerProFileAppender.Create;
FileAppender.OnLogRow := procedure(const LogItem: TLogItem; out LogRow: string)
begin
// Custom format: timestamp|level|tag|message
LogRow := Format('%s|%s|%s|%s', [
FormatDateTime('yyyy-mm-dd hh:nn:ss.zzz', LogItem.TimeStamp),
LogItem.LogTypeAsString,
LogItem.LogTag,
LogItem.LogMessage
]);
end;
Delphi Version Compatibility
| Delphi Version | Supported |
|---|---|
| Delphi 13 Florence | ✅ |
| Delphi 12 Athens | ✅ |
| Delphi 11 Alexandria | ✅ |
| Delphi 10.4 Sydney | ✅ |
| Delphi 10.3 Rio | ✅ |
| Delphi 10.2 Tokyo | ✅ (+ Linux) |
| Delphi 10.1 Berlin | ✅ |
| Delphi 10 Seattle | ✅ |
| Delphi XE8 - XE2 | ✅ |
Installation
Option 1: Delphinus Package Manager
Search for “LoggerPro” in Delphinus and install.
Option 2: Manual Installation
- Download from GitHub
- Add the
sourcesfolder to your Library Path - Add
uses LoggerPro, LoggerPro.GlobalLogger;to your code
What’s New in v2.0.0 (Beta)
- FATAL log level - New severity level above ERROR
- JSONL appender - JSON Lines format for structured logging
- ILogItemRenderers - Custom rendering interface for all appenders
- Delphi 13 Florence support
Links
- GitHub: github.com/danieleteti/loggerpro
- Documentation: Available in the
docsfolder - Support: Facebook Group
FAQ: Frequently Asked Questions
What is the best logging library for Delphi?
LoggerPro is a comprehensive, open-source logging framework for Delphi with 20+ appenders, async support, and cross-platform compatibility. It’s actively maintained and used in production by thousands of developers.
How do I log to a file in Delphi?
Use LoggerPro’s TLoggerProFileAppender:
uses LoggerPro, LoggerPro.FileAppender;
var Log := BuildLogWriter([TLoggerProFileAppender.Create]);
Log.Info('Message', 'tag');
How do I implement rolling log files in Delphi?
LoggerPro’s file appender supports automatic rolling by size and count:
TLoggerProFileAppender.Create(10, 2048, 'logs'); // 10 files, 2MB each
Can I log to multiple destinations simultaneously?
Yes, LoggerPro supports multiple appenders running in parallel:
Log := BuildLogWriter([
TLoggerProFileAppender.Create,
TLoggerProConsoleAppender.Create,
TLoggerProElasticSearchAppender.Create('http://localhost:9200')
]);
Does LoggerPro support async logging?
Yes, all LoggerPro appenders are asynchronous by default, ensuring logging doesn’t block your main application thread.
How do I log to ElasticSearch from Delphi?
Use TLoggerProElasticSearchAppender:
uses LoggerPro.ElasticSearchAppender;
Log := BuildLogWriter([TLoggerProElasticSearchAppender.Create('http://elasticsearch:9200')]);
Is LoggerPro thread-safe?
Yes, LoggerPro uses a custom TThreadSafeQueue<T> implementation and is fully thread-safe for multi-threaded applications.
What Delphi versions does LoggerPro support?
LoggerPro supports Delphi XE2 through Delphi 13 Florence, including Linux support from Delphi 10.2 Tokyo.
LoggerPro - Modern async logging for Delphi. 20+ appenders. Cross-platform. Open-source.
Comments
comments powered by Disqus