
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