
Delphi(Delphi XE6 -Delphi 12 Athens)/Freepascal(Trunk)/。Net(Windows/Linux/Android/MacOSX/iOS)マルチプロバイダーのロギング用のライブラリ:
Githubでこのプロジェクトを「主演」してください!コードを参照するのに役立つだけです。 
このプロジェクトが役立つ場合は、寄付をすることを検討してください。
2月10日、2024年2月Studio 12サポート
2021年11月22日Rad Studio 11がサポートされました
2020年5月30日: RAD Studio 10.4がサポートされています
5月2,2020: Twilioプロバイダー
2020年4月25日:カスタム出力形式とカスタムタグサポート
2020年4月24日:セントリープロバイダー
2019年9月14日:新しいオプションに含まれるログ情報:threadid。
2019年9月11日: RAD Studio Getitパッケージマネージャーに含まれています。
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 Support
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日: Telegram Provider。
2018年5月25日:カスタム出力MSG。
2018年5月22日:エルクサポート。
2018年5月20日:デルフィヌスサポート。
2018年5月20日: RedisおよびRESTプロバイダー用のオプションのフィールドを備えたJSON出力。
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は、ロガーとプロバイダーを自動的に管理します。ロガーとプロバイダーにはグローバルクラスがあり、AutoはアプリをCloseで作成およびリリースします。必要なプロバイダーを使用条項に追加するだけです。
注:ロギングを送信するには、ほぼ1つのプロバイダーを追加する必要があります。
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など、ETSOM1などがあります。
すべてのロガープロバイダーは、これらのイベントタイプの1つ以上をリッスンするように構成し、パフォーマンスの問題を回避するために、またはスパムされるために、1日あたりの範囲、1時間、分、2番目の範囲で受信したイベントタイプの数を制限できます。
プロバイダーは、ログの出力を管理します。出力はファイル、コンソール、電子メールなどです。プロバイダーがログの送信に何度も失敗した場合、自動的に無効になります(フルディスク、リモートサーバーダウンなど)。プロバイダーごとに制限を指定できます。プロバイダーには、時間形式の設定プロパティをお客様のニーズに変更するプロパティがあります。すべてのプロバイダーには、ログアイテムを受信するためのキューログがありますが、直接書き込み/送信を許可するために無効にすることができます。プロバイダーの作業を制御するためのいくつかのイベント(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プロバイダー:
Quick.logger.provider.eventlog: Windows Eventlogにログを送信します。
プロパティ:
HTTP RESTプロバイダー:
Quick.Logger.Provider.rest:JSON投稿としてRestserverにログを送信します。
プロパティ:
Redisプロバイダー:
Quick.logger.provider.redis: Redisサーバーにログを送信します。
プロパティ:
メモリプロバイダー:
Quick.Logger.Provider.Memory:ログイングをメモリに保存します。
プロパティ:
電報プロバイダー:
Quick.Logger.Provider.Telegram:メッセージとしてログを送信して、パブリック/プライベートテレグラムチャンネルに送信します。 (このチャンネルでボットのトークンが必要です)
プロパティ:
Slackプロバイダー:
Quick.logger.provider.slack:メッセージとしてログをパブリック/プライベートスラックチャネルに送信します。
プロパティ:
ADODBプロバイダー:
Quick.Logger.Provider.Adodb: LogをADOデータベースに保存します(MSSQL、MSACCESSなど..)
プロパティ:
Syslogプロバイダー:
Quick.logger.provider.syslog: syslogサーバーにログを送信します。
プロパティ:
Logstashプロバイダー:
Quick.logger.provider.logstash: Logstashサービスにログを送信します。
プロパティ:
ElasticSearchプロバイダー:
Quick.Logger.Provider.Elasticsearch: ElasticSearch Serverにログを送信します。
プロパティ:
InfloxDBプロバイダー:
Quick.logger.provider.influxdb: RoggingをInfloxDBデータベースに送信します。
プロパティ:
Graylogプロバイダー:
Quick.Logger.Provider.GrayLog: GrayLogサービスにログを送信します。
プロパティ:
セントリープロバイダー:
Quick.Logger.Provider.Sentry:ロギングをSentry Serviceに送信します。
プロパティ:
Twilioプロバイダー:
Quick.logger.provider.twilio: Twilioサービスにログを送信します。
プロパティ:
QuickLoggerを使用すると、ログする情報を選択できます。ホスト名、OSバージョン、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 :日付と時刻のログアイテムが発生します
日付:日付ログアイテムが発生します
時間:時間ログアイテムが発生します
レベル:レベルまたはイベントタイプ
levelint :数値としてのレベル
メッセージ:ロガーに送信されたメッセージ
環境:カスタマイズ可能な変数(通常は生産、テストなど)
プラットフォーム:カスタマイズ可能な変数(通常はデスクトップ、モバイルなど)
AppName :カスタマイズ可能な変数(デフォルトでは拡張機能なしでファイル名として設定)
Appversion :アプリケーションファイルバージョン
AppPath :アプリケーションの実行パス
ホスト名:コンピューター名
ユーザー名:ユーザー名を記録しました
Osversion :OSバージョン
CPUCORES :CPUコアの数
スレアイド:スレッドIDログアイテムセット
Logger.LogTags[ ' MODULE ' ] := ' Admin ' ;
GlobalLogConsoleProvider.CustomMsgOutput := True;
GlobalLogConsoleProvider.CustomFormatOutput := ' %{DATE} & %{TIME} - [%{LEVEL}] : %{MESSAGE} (%{MODULE}) ' ;QuickLoggerは、JSON形式から、および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つの例外フックがあります。使用節に1つ以上のユニットを追加する必要があります。
Delphiを学びたいですか、それともスキルを向上させたいですか? LearnDelphi.org