Become a member!

LoggerPro - Best Async Logging Framework for Delphi Applications

Archived release page. This documents an older version. For the current documentation see LoggerPro.

Quick Answer: LoggerPro is a free, async logging framework for Delphi with 20+ appenders including file, Redis, ElasticSearch, and syslog. Install via Delphinus or GitHub, then use Log.Info('message', 'tag') with the global logger, or configure custom appenders with BuildLogWriter().

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

AppenderDescription
TLoggerProFileAppenderRolling file appender with size/count limits
TLoggerProConsoleAppenderColored console output
TLoggerProOutputDebugStringAppenderWindows OutputDebugString
TVCLMemoLogAppenderVCL TMemo component
TVCLListViewAppenderVCL TListView component
TLoggerProJSONLFileAppenderJSONL format file appender

Database

AppenderDescription
TLoggerProADOAppenderMicrosoft ADO databases
TLoggerProFireDACAppenderFireDAC databases
TLoggerProElasticSearchAppenderElasticSearch integration

Network & Messaging

AppenderDescription
TLoggerProRedisAppenderRedis with LogsViewer support
TLoggerProSyslogAppenderRFC 5424 compliant syslog
TLoggerProUDPSyslogAppenderUDP syslog transport
TLoggerProNSQAppenderNSQ message queue
TLoggerProRESTAppenderREST API with extended info
TLoggerProEmailAppenderEmail notifications

System & Special

AppenderDescription
TLoggerProEventLogAppenderWindows Event Log
TLoggerProMemoryAppenderIn-memory buffer
TLoggerProDecoratorAppenderDecorator/filter pattern
TLoggerProDMSContainerAppenderDMSContainer 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 VersionSupported
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

LoggerPro works great with other open source projects by the same author:

ProjectDescriptionIntegration
DMVCFrameworkREST API framework for DelphiBuilt-in LoggerPro integration for API request logging
DelphiRedisClientComplete Redis clientUse TLoggerProRedisAppender to stream logs to Redis for centralized logging
DelphiGuardRAII memory managementAutomatic cleanup for log writers and appenders

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.

Key facts

LoggerPro is a modern async logging framework for Delphi/Object Pascal.

  • License: Apache 2.0 (free for commercial use)
  • Features: 20+ appenders, async logging, thread-safe, cross-platform
  • Appenders: File (rolling), Console, Database (ADO/FireDAC), Redis, ElasticSearch, Syslog, Email, REST, NSQ
  • Platforms: Windows, Linux (from Delphi 10.2 Tokyo)
  • Delphi versions: XE2 through 13 Florence
  • Key features: Custom renderers, tag support, pluggable architecture
  • Author: Daniele Teti
  • Use cases: Application logging, centralized logging, distributed systems, monitoring

Comments