SkillAgentSearch skills...

QuickLogger

Powerful and flexible library for logging on files, console, memory, email, rest, eventlog, syslog, slack, telegram, redis, logstash, elasticsearch, influxdb, graylog, Sentry, Twilio, ide debug messages and throw events for Delphi/Firemonkey/freepascal/.NET (Windows/Linux/OSX/IOS/Android).

Install / Use

/learn @exilon/QuickLogger

README

alt text

Delphi(Delphi XE6 - Delphi 13 Florence)/Freepascal(trunk)/.NET (Windows/Linux/Android/MACOSX/IOS) library for logging on multi providers:

  • Files
  • Console
  • Memory
  • Email
  • Rest server
  • Windows EventLog
  • Redis server
  • IDE debug
  • Throw events
  • Telegram
  • Slack
  • MSSQL, MSAcces, etc with ADODB.
  • SysLog
  • Logstash
  • ElasticSearch
  • InfluxDB
  • GrayLog
  • Controlled and unhandled exceptions hook
  • Sentry
  • Twilio

Give it a star

Please "star" this project in GitHub! It costs nothing but helps to reference the code. alt text

Star History Chart

Support

If you find this project useful, please consider making a donation.

paypal

Updates:

Feb 28,2026 RAD Studio 13 supported

Feb 10,2024 RAD Studio 12 supported

Nov 22,2021 RAD Studio 11 supported

May 30,2020: RAD Studio 10.4 supported

May 02,2020: Twilio provider

Apr 25,2020: Custom Output Format & custom Tags support

Apr 24,2020: Sentry provider

Sep 14,2019: New optional Included log info: ThreadId.

Sep 11,2019: Now included on RAD Studio GetIt package manager.

Mar 28,2019: Unhandled exceptions hook

Mar 28,2019: Improved exception info

Mar 16,2019: GrayLog provider

Feb 28,2019: InfluxDB provider

Feb 26,2019: ElasticSearch provider

Feb 25,2019: Logstash provider

Feb 19,2019: Delphi Linux compatilibity.

Feb 10,2019: Firemonkey OSX & IOS compatibility.

Dec 08,2018: Load/Save providers config from single json

Dec 07,2018: Delphi 10.3 Rio support

Sep 11,2018: Firemonkey android compatibility improved

Jul 04,2018: Native dll and .Net warpper (thanks to Turrican)

Jun 29,2018: Config from/to Json

Jun 15,2018: SysLog provider.

May 28,2018: Slack provider.

May 27,2018: ADODB provider.

May 27,2018: Telegram provider.

May 25,2018: Custom output Msg.

May 22,2018: ELK support.

May 20,2018: Delphinus support.

May 20,2018: Json output with optional fields for Redis and Rest providers.

May 17,2018: FreePascal Linux compatibility.

May 02,2018: FreePascal Windows compatibility.

Installation:

  • From package managers:
  1. Search "QuickLogger" on Delphinus or GetIt package managers and click Install
  • From Github:
  1. Clone this Github repository or download zip file and extract it.
  2. Add QuickLogger folder to your path libraries on Delphi IDE.
  3. Clone QuickLib Github repository https://github.com/exilon/QuickLib or download zip file and extract it.
  4. Add QuickLib folder to your path libraries on Delphi IDE.

Documentation:

Quick Logger is asynchronous. All logs are sent to a queue and don't compromises your application flow. You can define many providers to sent every log entry and decide what level accepts every one.

program
{$APPTYPE CONSOLE}
uses
    Quick.Logger:
    Quick.Logger.Provider.Files;
    Quick.Logger.Provider.Console;
begin
    //Add Log File and console providers
    Logger.Providers.Add(GlobalLogFileProvider);
    Logger.Providers.Add(GlobalLogConsoleProvider);
    //Configure provider options
    with GlobalLogFileProvider do
 	begin
    	FileName := '.\Logger.log';
        DailyRotate := True;
        MaxFileSizeInMB := 20;
        LogLevel := LOG_ALL;
    	Enabled := True;
  	end;
    with GlobalLogConsoleProvider do
    begin
    	LogLevel := LOG_DEBUG;
        ShowEventColors := True;
        Enabled := True;
    end;
    Log('Test entry',etInfo);
    Log('Test number: %d',[1],etWarning);
end.

Logger:

QuickLogger manages Logger and Providers automatically. Logger and providers have a global class, auto created and released on close your app. You only need to add wanted providers to your uses clause.

Note: You need to add almost one provider to send logging.

Properties:

- **Providers:** List of providers to send logs.
- **OnProviderError:** Event to receive provider error notifications.
- **RedirectOwnErrorsToProvider:** Select provider to get all provider notification errors.
- **WaitForFlushBeforeExit:** Number of seconds logger allowed to flush queue before closed.
- **QueueCount:** Queued items in main queue.
- **ProvidersQueueCount:** Queued items in providers queue (all providers).
- **OnQueueError:** Event for receive queue errors.
- **IsQueueEmpty:** Check if main queue or any provider queue has items pending to process.

EventTypes:

There are a range of eventtypes you can define in your logs: etHeader, etInfo, etSuccess, etWarning, etError, etCritical, etException, etDebug, etTrace, etCustom1, etCustom2.

Every logger provider can be configured to listen for one or more of these event types and limit the number of received eventtypes received for a range of eventtypes per Day, hour, minute or second for avoid performance problems or be spammed.

Log Providers:

Providers manage the output for your logs. Output can be file, console, email, etc. If a provider fails many times to send a log, will be disabled automatically (full disk, remote server down, etc). Limits can be specified per provider. Providers have a property to change Time format settings property to your needs. Every provider has a queue log to receive log items, but can be disabled to allow direct write/send. There are some events to control providers work (OnRestart, OnCriticalError, OnSendLimits, etc).

There are some predefined providers, but you can make your own provider if needed:

FILE PROVIDER:

  • Quick.Logger.Provider.Files: Sends logging to a file, managing log rotation and compression.

    Properties:

    • Filename: Filename of your log file. If not defined, gets name of your program + log
    • LogLevel: Log level that your provider accepts.
    • EventTypeNames: Every eventtype has a customizable text you can change to be reflected in your logs.
    • SendLimits: Defines max number of logs entries sent by day, hour, minute or second to avoid be spammed. Can be configured to limit only certain event types.
    • ShowEventType: Shows eventype (WARN, ERROR, INFO,..)
    • ShowHeaderInfo: Every execution or new log file logs a header with system information like Username, CPU, path, debug mode, etc.
    • UnderlineHeaderEventType: Writes an underline below every etHeader eventtype.
    • TimePrecission: If true, shows date and time and milliseconds in log entries.
    • DailyRotate: Rotates log file every day.
    • MaxFileSizeInMB: If value is greater than 0, rotates log file by size. It's independent of dailyrotate option.
    • MaxRotateFiles: Max number of files to keep when rotate a log.
    • RotatedFilesPath: Path where rotated files will be moved/zipped. If leave blank, rotated files will be remain in same folder log exists.
    • CompressRotatedFiles: Defines if rotated files will be compressed.
    • Enabled: Enables/disables receive logging.

CONSOLE PROVIDER:

  • Quick.Logger.Provider.Console: Sends logging to console out, allowing colored eventypes and timestamp.

    Properties:

    • ShowEventColors: Enables colored Event types when writes to console. There are predefined colors but you can change every eventype color with EventTypeColor property (EventTypeColor[etInfo] := clBlue)
    • LogLevel: Log level that your provider accepts.
    • EventTypeNames: Every eventtype has a customizable text you can change to be reflected in your logs.
    • SendLimits: Defines max number of logs entries sent by day, hour, minute or second to avoid be spammed. Can be configured to limit only certain event types.
    • ShowEventType: Shows eventype (WARN, ERROR, INFO,..).
    • UnderlineHeaderEventType: Writes an underline below every etHeader eventtype.
    • ShowTimeStamp: Shows datetime for every log entry.
    • TimePrecission: If true, shows date and time and milliseconds in log entries.
    • Enabled: Enables/disables receive logging.

EMAIL PROVIDER:

  • Quick.Logger.Provider.Email: Sends logging by email.

    Properties:

    • SMTP: Class to define host and email account info.
    • LogLevel: Log level that your provider accepts.
    • EventTypeNames: Every eventtype has a customizable text you can change to be reflected in your logs.
    • SendLimits: Defines max number of emails sent by day, hour, minute or second to avoid be spammed. Can be configured to limit only certain event types.
    • ShowTimeStamp: Shows datetime for every log entry.
    • TimePrecission: If true, shows date and time and milliseconds in log entries.
    • Enabled: Enables/disables receive logging.

EVENTS PROVIDER:

  • Quick.Logger.Provider.Events: Allows throw an event for every log item received.

    Properties:

    • LogLevel: Log level that your provider accepts.
    • EventTypeNames: Every eventtype has a customizable text you can change to be reflected in your logs.
    • SendLimits: Defines max number of emails sent by day, hour, minute or second.
    • TimePrecission: If true, shows date and time and milliseconds in log entries.
    • OnInfo..OnError and OnAny: Events thown for every event type.
    • Enabled: Enables/disables receive logging.

IDE DEBUG PROVIDER:

  • Quick.Logger.Provider.IDEDebug: Sends Logging to IDE Debug messages.

    Properties:

    • LogLevel: Log level that your provider accepts.
    • EventTypeNames: Every eventtype has a customizable text you can change to be reflected in your logs.
    • SendLimits: Defines max number of emails sent by day, hour, mi

Related Skills

View on GitHub
GitHub Stars437
CategoryData
Updated1d ago
Forks87

Languages

Pascal

Security Score

100/100

Audited on Mar 27, 2026

No findings