{"id":18074938,"url":"https://github.com/danieleteti/loggerpro","last_synced_at":"2025-04-08T08:16:46.161Z","repository":{"id":38359375,"uuid":"54708080","full_name":"danieleteti/loggerpro","owner":"danieleteti","description":"An modern and pluggable logging framework for Delphi","archived":false,"fork":false,"pushed_at":"2025-02-10T14:51:28.000Z","size":1402,"stargazers_count":366,"open_issues_count":18,"forks_count":93,"subscribers_count":57,"default_branch":"v2.0","last_synced_at":"2025-04-01T05:38:14.374Z","etag":null,"topics":["delphi","linux","logging-framework","logging-library","mobile","modern"],"latest_commit_sha":null,"homepage":null,"language":"Pascal","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/danieleteti.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"License.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-03-25T09:11:04.000Z","updated_at":"2025-03-07T16:57:44.000Z","dependencies_parsed_at":"2023-02-12T03:31:03.449Z","dependency_job_id":"8dda7cdc-6988-4a6c-afff-8aa28953e4c2","html_url":"https://github.com/danieleteti/loggerpro","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danieleteti%2Floggerpro","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danieleteti%2Floggerpro/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danieleteti%2Floggerpro/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danieleteti%2Floggerpro/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/danieleteti","download_url":"https://codeload.github.com/danieleteti/loggerpro/tar.gz/refs/heads/v2.0","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247801175,"owners_count":20998339,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["delphi","linux","logging-framework","logging-library","mobile","modern"],"created_at":"2024-10-31T10:23:55.759Z","updated_at":"2025-04-08T08:16:46.094Z","avatar_url":"https://github.com/danieleteti.png","language":"Pascal","funding_links":[],"categories":["Logging"],"sub_categories":[],"readme":"# LoggerPro for Delphi\n\nAn modern and pluggable logging framework for Delphi\n\n## Compatibility\n\nLoggerPro is compatibile with\n- Delphi 12 Athens\n- Delphi 11 Alexandria\n- Delphi 10.4 Sydney\n- Delphi 10.3 Rio\n- Delphi 10.2 Tokyo (Added Linux compatibility)\n- Delphi 10.1 Berlin\n- Delphi 10 Seattle\n- Delphi XE8\n- Delphi XE7\n- Delphi XE6\n- Delphi XE5\n- Delphi XE4\n- Delphi XE3\n- Delphi XE2\n\n## What's new in 2.0.0 (repo version, beta)\n- Delphi 12 Athens Support\n- FIX https://github.com/danieleteti/loggerpro/issues/72\n- New LogLevel: FATAL (https://github.com/danieleteti/loggerpro/issues/80)\n- New Appender: JSONL\n- Added `ILogItemRenderers` (check samples)\n\n## What's new in 1.4.0 (stable version)\n\n- Improved VCL and FMX visual appenders\n- Appenders can be added and removed programmatically\n- Added packages for latest versions of Delphi\n- Improved algorithm used to handle slow consumers\n- Added [DMSContainer's EventStreams](http://dmscontainer.bittimeprofessionals.com/) Appender\n- Added very basic console appender that assumes is running from console in order to provide simple Linux console logging\n- FIX [Issue 50](https://github.com/danieleteti/loggerpro/issues/50)\n- New filtering log file appender that allows to pick individual tags to be written into a file.\n- FIX [Issue 57](https://github.com/danieleteti/loggerpro/issues/57)\n- FIX [Issue 60](https://github.com/danieleteti/loggerpro/issues/60)\n\n## What's new in 1.3.2\n\n- Added support for Android API level 26 in mobile demo\n- Added packages for Delphi 10.3 Rio, Delphi 10.2 Tokyo, Delphi 10.1 Berlin and Delphi 10.0 Seattle.\n- Added packages for Delphi XE7 and Delphi XE8 (these packages do not contain appenders which uses `System.Net.HttpClient`)\n- Added support for Linux in `TLoggerProFileAppender` (Thank you [charoit](https://github.com/charoit))\n\n## What's new in 1.3.0\n- Replace `TThreadedList\u003cT\u003e` with a custom implementation (`TThreadSafeQueue\u003cT\u003e`) because of a [bug](https://forums.embarcadero.com/thread.jspa?messageID=941762) and [this](https://quality.embarcadero.com/browse/RSP-19993) in `TMonitor`.\n  - `TThreadSafeQueue\u003cT\u003e` is not a drop-in replacement for the `TThreadedQueue\u003cT\u003e` but can be used in other projects if you are fighting with the same bug.\n- `TVCLMemoLogAppender.Create` gots new parameter: `aClearOnStartup` which optionally clear the memo at the startup.\n- Improvement to the `TLoggerProConsoleAppender` (Thanks to [Fulgan](https://github.com/Fulgan))\n- Improvement to the `TLoggerProFileAppender`; now there is a `OnLogRow` callback that can be used to customize log row format.\n- New overloaded `Log` methods. The `*Fmt` versions are deprecated and will be removed in a future version [ISSUE #17](https://github.com/danieleteti/loggerpro/issues/17)\n- New [NSQ](https://nsq.io) appender (Thanks to [Fulgan](https://github.com/Fulgan))\n- New logger filter decorator (Thanks to [Fulgan](https://github.com/Fulgan))\n- New REST appender with support for extended information (samples for Windows and Android)\n  - Extended information are supported in Windows (fully) and Android (partially)  \n  - In the sample folder is provided also the `RESTLogCollector`\n- New [Elastic Search](https://www.elastic.co/products/elasticsearch) Log appender (Thanks to Salvatore Sparacino)\n\n\n## Getting started\n```delphi\nprogram getting_started_console;\n\n{$APPTYPE CONSOLE}\n\nuses\n  System.SysUtils,\n  LoggerPro.GlobalLogger; //this is the global logger, it is perfect to understand the basic operation of LoggerPro.\n\nbegin\n  try\n    //the global logger uses a TLoggerProFileAppender, so your logs will be written on a \n    //set of files with automatic rolling/rotating\n    \n    Log.Debug('Debug message', 'main'); //TLoggerProFileAppender uses the \"tag\" to select a different log file\t\n    Log.Info('Info message', 'main');\n    Log.Warn('Warning message', 'main');\n    Log.Error('Error message', 'errors');\n    WriteLn('Check \"getting_started_console.00.main.log\" and \"getting_started_console.00.errors.log\" to see your logs');\n    ReadLn;\n  except\n    on E: Exception do\n      Writeln(E.ClassName, ': ', E.Message);\n  end;\n\nend.\n```\n\nThe most flexible/correct approach is not much complicated than the global logger one. Check how is simple to create a custom instance of logwriter\n\n```delphi\nprogram getting_started_console_appenders;\n\n{$APPTYPE CONSOLE}\n\nuses\n  System.SysUtils,\n  LoggerPro, //LoggerPro core\n  LoggerPro.FileAppender, //File appender\n  LoggerPro.OutputDebugStringAppender; //OutputDebugString appender\n\nvar\n  Log: ILogWriter;\n\nbegin\n  Log := BuildLogWriter([TLoggerProFileAppender.Create,\n    TLoggerProOutputDebugStringAppender.Create]);\n\n  try\n    Log.Debug('Debug message', 'main');\n    Log.Info('Info message', 'main');\n    Log.Warn('Warning message', 'main');\n    Log.Error('Error message', 'errors');\n    WriteLn('Check ');\n    WriteLn('  \"getting_started_console.00.main.log\"');\n    WriteLn('  \"getting_started_console.00.errors.log\"');\n\n    if DebugHook \u003c\u003e 0 then //inform the user where his/her logs are\n    begin\n      WriteLn('also, you logs have been sent to the current debugger, check the Delphi''s EventLog window to see them.');\n    end\n    else\n    begin\n      WriteLn('..seems that no debugger is present. The logs can be seen using DebugView.');\n      WriteLn('Download it from here https://technet.microsoft.com/en-us/sysinternals/debugview.aspx');\n      WriteLn('Learn how to use http://tedgustaf.com/blog/2011/5/use-debugview-to-view-debug-output-from-asp-net-web-application/');\n    end;\n    ReadLn;\n  except\n    on E: Exception do\n      WriteLn(E.ClassName, ': ', E.Message);\n  end;\n\nend.\n```\n\n## Built-in log appenders\nThe framework contains the following built-in log appenders\n- File appender (`TLoggerProFileAppender`) (v1.0.0+)\n- Console appender (`TLoggerProConsoleAppender`) (v1.0.0+)\n- OutputDebugString appender (`TLoggerProOutputDebugStringAppender`) (v1.0.0+)\n- VCL Memo appender (`TVCLMemoLogAppender`) (v1.0.0+)\n- VCL ListView appender (`TVCLMemoLogAppender`) -- thanks to [https://github.com/he3p94uu](https://github.com/he3p94uu) (v1.3.0+)\n- Redis Appender with LogsViewer(to aggregate logs from different instances on a single Redis instance) (v1.2.0+)\n- Email appender (to send email as log, very useful for fatal errors) (v1.2.0+)\n- SysLog appender [RFC 5424](https://tools.ietf.org/html/rfc5424) compliant -- thanks to [https://github.com/nurettin](https://github.com/nurettin) (v1.3.0+)\n- [NSQ](https://nsq.io) appender (Thanks to [Fulgan](https://github.com/Fulgan)) (v1.3.0+)\n- Decorator appender (Thanks to [Fulgan](https://github.com/Fulgan)) (v1.3.0+)\n\nNext appenders in the development pipeline\n- RESTful Appender (to send logs to a rest endpoint using a specific request format, so that you can implement log server in DelphiMVCFramework, PHP, Java, Python, Node etc)\n- Twitter Appender (to send logs to a Twitter Account)\n- Database appender (to send logs to a database table using FireDAC components -- Thank You Omar Bossoni)\n\nThe log writers and all the appenders are asycnhronous.\n\n**Check the samples to see how to use each appender or even combine different appenders.**\n\n## Documentation\n\nDocumentation is available in the `docs` folder as HTML.\n\n## Other\nYou can install [Delphinus package manager](https://github.com/Memnarch/Delphinus/wiki/Installing-Delphinus) and install LoggerPro as a package there. (Delphinus-Support)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanieleteti%2Floggerpro","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanieleteti%2Floggerpro","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanieleteti%2Floggerpro/lists"}