Become a member!

LoggerPro - Modern Logging Framework for Delphi

LoggerPro Logo

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

  1. Download from GitHub
  2. Add the sources folder to your Library Path
  3. 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

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