
Delphi (Delphi XE6 - Delphi 12 Athens)/Freepascal (Trunk)/. Библиотека Net (Windows/Linux/Android/Macosx/iOS) для ведения журнала на нескольких поставщиках:
Пожалуйста, «звезда» этот проект в GitHub! Это ничего не стоит, кроме как помогает ссылаться на код. 
Если вы найдете этот проект полезным, пожалуйста, рассмотрите возможность сделать пожертвование.
10 февраля 2024 года Rad Studio 12 поддерживается
22 ноября 2021 года Rad Studio 11 поддерживается
30 мая 2020 года: Rad Studio 10.4 поддерживается
02 2020 мая: поставщик Twilio
25 2020 апреля: Пользовательский формат вывода и поддержка пользовательских тегов
24 апреля 2020 года: часовой провайдер
14 сентября 2019: новая дополнительная информация о журнале: Threadid.
11 сентября 2019 года: теперь включен в Rad Studio Getit Manager.
28 марта 2019 года: невозможные исключения крюк
28 марта 2019 года: улучшенная информация об исключении
16 марта 2019 года: поставщик Graylog
28 февраля 2019 года: поставщик Influxdb
26 февраля 2019 года: провайдер Elasticsearch
25 февраля 2019 года: поставщик logstash
19 февраля 2019: Delphi Linux Compatilibity.
10 февраля 2019 года: Firemonkey OSX & IOS совместимость.
08 декабря 2018 года: Загрузка/сохранение поставщиков конфигурации из одного JSON
07 декабря 2018: Delphi 10.3 Rio Support
11 сентября 2018: Повышенная совместимость с FireMonkey Android
04,2018 июля: Native DLL и .NET Warpper (спасибо Туррикуну)
29 июня 2018: конфигурация от/до json
15 июня 2018 года: поставщик системно.
28 мая 2018 года: провайдер Slack.
27 мая 2018 года: поставщик ADODB.
27 мая 2018 года: поставщик телеграммы.
25 мая 2018 года: пользовательский выходной MSG.
22 мая 2018 года: поддержка лося.
20 мая 2018 года: поддержка Delphinus.
20 мая 2018 года: вывод JSON с дополнительными полями для Redis и REST Providers.
17 мая 2018 года: совместимость с Freepascal Linux.
02,2018 мая: совместимость Windows Freepascal.
Быстрый регистратор асинхронно. Все журналы отправляются в очередь и не ставят под угрозу поток вашего приложения. Вы можете определить многих поставщиков, чтобы отправить каждую запись журнала и решить, какой уровень принимает каждый.
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 .QuickLogger управляет логическим директором и поставщиками автоматически. У журнализатора и поставщиков есть глобальный класс, созданный и выпущенный в закрытии вашего приложения. Вам нужно только добавить разыскиваемых поставщиков в пункт вашего использования.
Примечание: вам нужно добавить почти одного провайдера для отправки журнала.
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.
Существует ряд событий, которые вы можете определить в своих журналах: Etheader, Etinfo, Etsuccess, Etwarning, Eterror, Etcritical, Etexception, Etdebug, Ettrace и т. Д. и т. Д.
Каждый поставщик регистраторов может быть настроен для прослушивания одного или нескольких из этих типов событий и ограничения количества полученных событий, полученных для диапазона событий в день, часа, минуты или второго, чтобы избежать проблем с производительностью или спамить.
Поставщики управляют выводом для ваших журналов. Вывод может быть файл, консоль, электронную почту и т. Д. Если поставщик не удается много раз для отправки журнала, будет автоматически отключаться (полный диск, удаленный сервер и т. Д.). Ограничения могут быть указаны для для поставщика. Поставщики имеют свойство для изменения настройки формата времени на ваши потребности. У каждого поставщика есть журнал очереди для получения элементов журнала, но может быть отключен, чтобы разрешить прямую запись/отправку. Есть некоторые события для управления поставщиками (OnRestart, OncriticalError, OnsendLimits и т. Д.).
Есть несколько предопределенных поставщиков, но вы можете сделать своего собственного поставщика, если это необходимо:
Поставщик файлов:
Quick.logger.provider.files: отправляет журнал в файл, управляя поворотом журнала и сжатием.
Характеристики:
Поставщик консолей:
Quick.logger.provider.console: отправляет журнал для консоли, позволяя цветные события и временные метки.
Характеристики:
Поставщик электронной почты:
Quick.logger.provider.email: отправляет журнал по электронной почте.
Характеристики:
Провайдер событий:
Quick.logger.provider.events: позволяет бросить событие для каждого полученного журнала.
Характеристики:
Поставщик отладки IDE:
Quick.logger.provider.idedebug: отправляет журнал в сообщения отладки IDE.
Характеристики:
Windows EventLog Provider:
Quick.logger.provider.eventlog: отправляет журнал в Windows EventLog.
Характеристики:
HTTP REST Provider:
Quick.logger.provider.Rest: отправляет журнал в RestServer в качестве сообщения JSON.
Характеристики:
Redis Provider:
Quick.logger.provider.redis: отправляет журнал на сервер Redis.
Характеристики:
Поставщик памяти:
Quick.logger.provider.memory: сохраняет журнал в память.
Характеристики:
Поставщик телеграммы:
Quick.logger.provider.telegram: Отправить журнал в качестве сообщения для публичного/частного канала Telegram. (Вам нужен знак бота на этом канале)
Характеристики:
Slack Provider:
Quick.logger.provider.slack: отправить журнал в качестве сообщения на публичный/частный канал Slack.
Характеристики:
Поставщик ADODB:
Quick.logger.provider.adodb: сохраняет журнал в базу данных ADO (MSSQL, MSACCESS и т. Д.)
Характеристики:
Поставщик системно:
Quick.logger.provider.syslog: отправляет журнал на сервер Syslog.
Характеристики:
Провайдер logstash:
Quick.logger.provider.logstash: отправляет журнал в службу Logstash.
Характеристики:
Провайдер Elasticsearch:
Quick.logger.provider.elasticsearch: отправляет журнал на сервер Elasticsearch.
Характеристики:
Поставщик InfluxDB:
Quick.logger.provider.influxdb: отправляет журнал в базу данных InfluxDB.
Характеристики:
Поставщик Graylog:
Quick.logger.provider.graylog: отправляет журнал в сервис Graylog.
Характеристики:
Провайдер часовых:
Quick.logger.provider.sentry: отправляет журнал в Sentry Service.
Характеристики:
Провайдер Twilio:
Quick.logger.provider.twilio: отправляет журнал в Service Twilio.
Характеристики:
QuickLogger позволяет выбрать, какую информацию для журнала. Вы можете включить имя хоста, версию ОС, AppName, платформу или среду (производство, тест и т. Д.), ThreadID, ProcessID и другие поля (для совместимости с множеством средств или многоуровневых средств). Это более очевидно для удаленного ведения журнала, таких как Redis или Rest, но поставщик файлов может написать заголовок с этими полями, если хотите.
Характеристики:
GlobalLogConsoleProvider.IncludedInfo := [iiAppName,iiHost,iiEnvironment,iiPlatform];
GlobalLogConsoleProvider.IncludedTags := [ ' MyTag1 ' , ' MyTag2 ' ];GlobalLogRedisProvider.CustomMsgOutput := True;
Log( ' {"level":"warn","text":"my text"} ' ,etInfo);GlobalLogConsoleProvider.CustomMsgOutput := True;
GlobalLogConsoleProvider.CustomFormatOutput := ' %{DATE} & %{TIME} - [%{LEVEL}] : %{MESSAGE} (%{MYTAG1}) ' ;QuickLogger имеет много предопределенных переменных, но вы можете определить свои собственные теги для использования в пользовательском выходном формате.
DateTime : Происходит пункт журнала даты и времени
Дата : встречается дата.
Время : происходит
Уровень : уровень или события
Уровень : уровень как числовой
Сообщение : Сообщение отправлено в журнал
Среда : настраиваемая переменная (обычно производство, тест и т. Д.)
Платформа : настраиваемая переменная (обычно настольный компьютер, мобильный и т. Д.)
AppName : настраиваемая переменная (по умолчанию установлен как имя файла без расширения)
Appversion : версия файла приложения
AppPath : путь запуска приложения
Имя хоста : имя компьютера
Имя пользователя : зарегистрированное имя пользователя
Osversion : ОС версия
Cpucores : количество ядер ЦП
Treaid : набор элемента идентификатора потока
Logger.LogTags[ ' MODULE ' ] := ' Admin ' ;
GlobalLogConsoleProvider.CustomMsgOutput := True;
GlobalLogConsoleProvider.CustomFormatOutput := ' %{DATE} & %{TIME} - [%{LEVEL}] : %{MESSAGE} (%{MODULE}) ' ;QuickLogger может импортировать или экспортировать конфигурацию из/в формат JSON. Эта функция позволяет простую способ заранее сконфигурировать ваших поставщиков.
// Load single provider from json file
GlobalLogRedisProvider.LoadFromFile( ' C:logfileprovider.json ' );
// Save all providers to json file
Logger.Providers.SaveToFile( ' C:loggerconfig.json ' );
// Load all providers from json string
Logger.Providers.FromJson(json); Example multiprovider config file:
{"GlobalLogConsoleProvider":
{
"ShowEventColors": true,
"ShowTimeStamp": true,
"UnderlineHeaderEventType": false,
"Name": "TLogConsoleProvider",
"LogLevel": "[etHeader,etInfo,etSuccess,etWarning,etError,etCritical,etException,etDone,etCustom1,etCustom2]",
"TimePrecission": true,
"MaxFailsToRestart": 2,
"MaxFailsToStop": 10,
"CustomMsgOutput": false,
"UsesQueue": true,
"Enabled": true,
"SendLimits": {
"TimeRange": "slNoLimit",
"LimitEventTypes": "[]",
"MaxSent": 0
},
"AppName": "QuickLoggerDemo",
"Environment": "",
"PlatformInfo": "",
"IncludedInfo": "[iiAppName,iiHost]"
},
"GlobalLogFileProvider":
{
"FileName": "D:\LoggerDemo.log",
"AutoFileNameByProcess": false,
"MaxRotateFiles": 3,
"MaxFileSizeInMB": 10,
"DailyRotate": false,
"RotatedFilesPath": "",
"CompressRotatedFiles": false,
"ShowEventType": true,
"ShowHeaderInfo": true,
"UnderlineHeaderEventType": false,
"AutoFlush": false,
"Name": "TLogFileProvider",
"LogLevel": "[etInfo,etSuccess,etWarning,etError,etCritical,etException]",
"TimePrecission": false,
"MaxFailsToRestart": 2,
"MaxFailsToStop": 10,
"CustomMsgOutput": false,
"UsesQueue": true,
"Enabled": true,
"SendLimits": {
"TimeRange": "slNoLimit",
"LimitEventTypes": "[etInfo]",
"MaxSent": 0
},
"AppName": "QuickLoggerDemo",
"Environment": "",
"PlatformInfo": "",
"IncludedInfo": "[iiAppName,iiHost,iiUserName,iiOSVersion]"
}
}
QuickLogger может запечатлеть ваши исключения приложения. Есть 3 исключения. Вам нужно добавить один или несколько единиц в пункт вашего использования:
Вы хотите изучить Delphi или улучшить свои навыки? LearnDelphi.org