
Delphi(Delphi Xe6 -Delphi 12雅典)/freepascal(Trunk)/。網絡(Windows/Linux/linux/android/macOSX/ios)庫,用於在多提供商上登錄:
請在Github“星”這個項目!它無需花費,但有助於參考代碼。 
如果您覺得這個項目有用,請考慮捐款。
2月10,2024 RAD Studio 12支持
11月22日,2021年Rad Studio 11支持
5月302020: Rad Studio 10.4支持
2020年5月2,2020: Twilio提供商
4月25日25,2020:自定義輸出格式和自定義標籤支持
4月24日,2020年:哨兵提供商
2019年9月14日:新可選的日誌信息:threadID。
2019年9月11日:現在包含在Rad Studio Getit Package Manager中。
2019年3月28日:未手持異常
2019年3月28日:改進的異常信息
2019年3月16日: GrayLog提供商
2019年2月28日: InfluxDB提供商
2019年2月26日: Elasticsearch提供商
2019年2月25日: Logstash提供商
2019年2月19日: Delphi Linux兼容。
2019年2月10日: Firemonkey OSX和iOS兼容性。
2018年12月8日:加載/保存提供者從單個JSON配置
2018年12月7日: Delphi 10.3 Rio支持
2018年9月11日: Firemonkey Android兼容性提高了
2018年7月4日:本地DLL和.NET WARPPER(感謝Turrican)
2018年6月29日:從/到JSON的配置
2018年6月15日: Syslog提供商。
2018年5月28日: Slack提供商。
2018年5月27日: ADODB提供商。
2018年5月27日:電報提供商。
2018年5月25日:自定義輸出消息。
2018年5月22日:麋鹿支持。
2018年5月20日: Delphinus支持。
2018年5月20日: JSON輸出帶有可選的REDIS和REST提供商。
2018年5月17日: Freepascal Linux兼容性。
2018年5月2日: Freepascal Windows兼容性。
快速記錄器是異步的。所有日誌都發送到隊列,並且不會損害您的應用程序流程。您可以定義許多提供商以發送每個日誌條目並確定每個級別接受每個級別。
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會自動管理Logger和提供商。 Logger和提供商有一個全球類,在關閉您的應用程序上創建並發布了自動類。您只需要在您的用途條款中添加所需的提供商即可。
注意:您需要添加幾乎一個提供商來發送記錄。
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.
您可以在日誌中定義多種事件類型:乙烯,etinfo,etinfo,Etsuccess,etwarning,eterror,Eterror,Etexception,etDebug,etdebug,ettrace,ettrace等。
每個記錄儀提供商都可以配置為聆聽其中一種或多種事件類型,並限制每天,每天,小時,分鐘或第二個接收到的事件類型的接收到的事件類型的數量,以避免性能問題或垃圾郵件。
提供商管理日誌的輸出。輸出可以是文件,控制台,電子郵件等。如果提供商將失敗多次發送日誌,則將自動禁用(完整磁盤,遠程服務器,等等)。可以指定每個提供商的限制。提供者有一個屬性,可以根據您的需求更改時間格式設置屬性。每個提供商都有一個隊列日誌以接收日誌項目,但是可以禁用以允許直接寫入/發送。有一些可以控制提供商工作的事件(Onrestart,OnCriticalError,OnSendLimits等)。
有一些預定義的提供商,但是您可以在需要時製作自己的提供商:
文件提供商:
quick.logger.provider.files:將記錄發送到文件,管理日誌旋轉和壓縮。
特性:
控制台提供商:
quick.logger.provider.console:發送日誌記錄到主機,允許彩色Eventypes和時間戳。
特性:
電子郵件提供商:
quick.logger.provider.email:通過電子郵件發送記錄。
特性:
活動提供商:
quick.logger.provider.events:允許為收到的每個日誌項目扔一個事件。
特性:
IDE調試提供商:
quick.logger.provider.idedebug:發送記錄到IDE調試消息。
特性:
Windows EventLog提供商:
quick.logger.provider.eventlog:將記錄發送到Windows EventLog。
特性:
HTTP REST提供商:
quick.logger.provider.rest:將記錄發送到restserver作為JSON帖子。
特性:
Redis提供商:
quick.logger.provider.redis:將記錄發送到redis服務器。
特性:
內存提供商:
quick.logger.provider.memory:保存登錄內存。
特性:
電報提供商:
quick.logger.provider.telegram:將日誌作為消息發送到公共/私人電報頻道。 (您需要在此頻道中的bot代幣)
特性:
Slack提供商:
quick.logger.provider.slack:將log作為消息發送到公共/私人鬆弛頻道。
特性:
ADODB提供商:
quick.logger.provider.adodb:將日誌保存到ADO數據庫(MSSQL,MSACCESS等)。
特性:
Syslog提供商:
quick.logger.provider.syslog:將記錄發送到syslog服務器。
特性:
LogStash提供商:
quick.logger.provider.logstash:將記錄發送到logstash服務。
特性:
Elasticsearch提供商:
quick.logger.provider.elasticsearch:將記錄發送到Elasticsearch Server。
特性:
InfuxdB提供商:
quick.logger.provider.influxdb:發送日誌記錄到InfluxDB數據庫。
特性:
GrayLog提供商:
quick.logger.provider.graylog:將記錄發送到GrayLog服務。
特性:
哨兵提供商:
quick.logger.provider.sentry:將記錄發送到哨兵服務。
特性:
Twilio提供商:
quick.logger.provider.twilio:將記錄發送到Twilio服務。
特性:
QuickLogger允許選擇要記錄的信息。您可以包括主機名,OS版本,AppName,平台或環境(生產,測試等),ThreadID,ProcessID和其他字段(與多種環境或多種設備兼容)。對於Redis或Rest(例如REDIS)等遠程記錄來說,更明顯,但是如果您願意,可以用該字段編寫文件提供商。
特性:
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 :日期和時間日誌項目發生
日期:日期項發生
時間:時間日誌項發生
級別:級別或事件類型
LevelInt :升級為數字
消息:發送到Logger的消息
環境:可自定義變量(通常生產,測試等)
平台:可自定義變量(通常是台式機,移動等)
appName :可自定義變量(默認情況下以文件名為單位,無擴展名)
appversion :應用程序文件版本
AppPath :應用程序運行路徑
主機名:計算機名稱
用戶名:記錄的用戶名
ORVERSION :OS版本
CPUCORES :CPU內核數
threaid :線程ID日誌項目集
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