
| البرتغالية البرازيلية | الإنجليزية |
تم تصميم DataLogger ليكون مكتبة سجل بسيطة تدعمها توفير متعددة.
الدعم: مطور [email protected]
$ boss install github.com/dliocode/dataloggerأضف المجلدات التالية إلى مشروعك ، في Project> Options> Delphi Compiler> Search Path
../src/Core
../src/Providers
هناك طريقتان مختلفتان لاستخدام Datalogger: مباشرة عن طريق Logger أو إنشاء إنشاء TDataLogger الخاص بك.
عينات
الأول يهدف فقط إلى أن يكون سجل مشترك مناسب لاستخدامه خلال التطبيق الخاص بك إذا اخترت.
uses DataLogger;
يعمل مزود بشكل أساسي لتخزين سجلاته. يمكن أن يكون لكل مثيل من tdatalogger العديد من توفره .
هنا لدينا قائمة تضم 60 توفر:
| اسم | يستخدم | أمثلة |
|---|---|---|
| AWS CloudWatch | datalogger.provider.aws.cloudwatch | AWS CloudWatch |
| البديهية | datalogger.provider.axiom | البديهية |
| CallMebot | datalogger.provider.callmebot.whatsapp | CallMebot |
| وحدة التحكم | datalogger.provider.console | وحدة التحكم وحدة تحكم بسيطة |
| coalogix | datalogger.provider.cralogix | coalogix |
| CSV | datalogger.provider.csv | CSV |
| datadatog | datalogger.provider.dateg | datadatog |
| Datalust | datalogger.provider.datalust | Datalust |
| خلاف | datalogger.provider.discord.webhook | discordhook |
| Dynatrace | Date logger.provider.dynatrace | Dynatrace |
| Elasticsearch | datalogger.provider.elasticsearch | Elasticsearch |
| علمه | datalogger.provider.elmah | علمه |
| بريد إلكتروني | datalogger.provider.email | بريد إلكتروني |
| سجل الأحداث | datalogger.provider.eventlog | eventlog |
| الأحداث | datalogger.provider.events | الأحداث الأحداث - مع مجموعة البيانات الأحداث - مع sqlite |
| Firebase | Date logger.provider.firebase.realtime قاعدة بيانات | Firebase |
| فجوة | datalogger.provider.grafana.loki datalogger.provider.grafana.oncall.webhook | فجوة |
| Graphjson | datalogger.provider.graphjson | Graphjson |
| رمادي | datalogger.provider.graylog | رمادي |
| HTML | datalogger.provider.html | HTML |
| LISTBOX | datalogger.provider.listbox | LISTBOX |
| ListView | datalogger.provider.listview | ListView |
| لوجينات | datalogger.provider.logentries | لوجينات |
| logflare | datalogger.provider.logflare | logflare |
| loggly | datalogger.provider.loggly | loggly |
| logstash | datalogger.provider.logstash | logstash |
| logthal | datalogger.provider.logtail | logthal |
| لوجز | datalogger.provider.logz | لوجز |
| Mailgun | datalogger.provider.mailgun.api | Mailgun |
| MailJet | datalogger.provider.mailjet.api | MailJet |
| Mattemost | datalogger.provider.mattemet datalogger.provider.mattemost.webhooks | Mattemost Mattemosthook |
| مذكرة | datalogger.provider.memo | مذكرة المذكرة والملف النصي مذكرة - خطأ فقط/VCL |
| ذاكرة | datalogger.provider.memory | ذاكرة |
| ميزما | datalogger.provider.mezmo | ميزما |
| mongodb | datalogger.provider.mongodb.cloud | mongodb |
| ntfy | datalogger.provider.ntfy | ntfy |
| نيوريليك | datalogger.provider.newrelic | نيوريليك |
| إشعار | datalogger.provider.Notification | إشعار |
| جديد | datalogger.provider.novu | جديد |
| OutputDebugString | datalogger.provider.outputDebugString | OutputDebugString |
| papertrail | datalogger.provider.papertrail | papertrail |
| ختم البريد | datalogger.provider.postmark.api | ختم البريد |
| الأرنب | datalogger.provider.RabbitMq | الأرنب |
| redis | datalogger.provider.redis | redis |
| استراحة | datalogger.provider.rest.httpclient datalogger.provider.rest.indy datalogger.provider.rest.nethttpclient | استراحة |
| ريتشيديت | datalogger.provider.richedit | ريتشيديت |
| sematext | datalogger.provider.sematext.logs | sematext-logs |
| SendChamp | datalogger.provider.sendchamp.sms datalogger.provider.sendchamp.whatsapp | Sendemail |
| Sendemail | datalogger.provider.sendemail | Sendemail |
| SendGrid | datalogger.provider.sendgrid.webapi | SendGridwebapi |
| الركود | datalogger.provider.slack.webapi datalogger.provider.slack.webhook | الركود |
| Splunk | datalogger.provider.splunk | Splunk |
| المقبس | datalogger.provider.socket | المقبس |
| Sumologic | datalogger.provider.Sumologic | Sumologic |
| syslog | datalogger.provider.syslog datalogger.provider.syslog.indy | syslog syslog indy |
| برقية | datalogger.provider.telegram | برقية |
| TextFile | datalogger.provider.textfile | TextFile |
| Ultramsg | datalogger.provider.ultramsg.whatsapp | Ultramsg |
| twilio | datalogger.provider.twilio.sms datalogger.provider.twilio.whatsapp | twilio |
| Z-api | datalogger.provider.zapi.whatsapp | Z-api |
تحدث هذه التبعيات عندما يوفر البعض الاستخدام
| مزود | يعتمد على |
|---|---|
| datalogger.provider.RabbitMq | الأرنب |
| datalogger.provider.redis | redis |
| datalogger.provider.sendemail | Sendemail |
Access_WIFI_STATE الإذن مطلوب: يستخدم لالتقاط عنوان MAC.
uses
DataLogger,
DataLogger.Provider.Console;
begin
Logger.AddProvider(TProviderConsole.Create);
Logger
.Trace( ' My Trace ' )
.Debug( ' My Debug ' )
.Info( ' My Info ' )
.Warn( ' My Warn ' )
.Error( ' My Error ' )
.Success( ' My Success ' )
.Fatal( ' My Fatal ' )
.Custom( ' Custom Level ' , ' My Custom ' )
;
// or
Logger
.T( ' My Trace ' )
.D( ' My Debug ' )
.I( ' My Info ' )
.W( ' My Warn ' )
.E( ' My Error ' )
.S( ' My Success ' )
.F( ' My Fatal ' )
.C( ' Custom Level ' , ' My Custom ' )
;
Readln;
end . uses
DataLogger,
DataLogger.Provider.Console;
var
LCustomLogger: TDataLogger;
begin
LCustomLogger := TDataLogger.Builder;
LCustomLogger.AddProvider(TProviderConsole.Create);
LCustomLogger
.Trace( ' My Trace ' )
.Debug( ' My Debug ' )
.Info( ' My Info ' )
.Warn( ' My Warn ' )
.Error( ' My Error ' )
.Success( ' My Success ' )
.Fatal( ' My Fatal ' )
.Custom( ' Custom Level ' , ' My message with custom level ' );
Readln;
end . uses
DataLogger,
DataLogger.Simple,
DataLogger.Provider.Console;
begin
// Defini o provider
Logger.AddProvider(TProviderConsole.Create);
// Defini no DataloggerSimple a instância do log a ser utilizado
TDataLoggerSimple.SetDataLogger(Logger);
// Só usar o modo simples;
Trace( ' My message Trace ' );
Debug( ' My message debug ' );
Info( ' My message info ' );
Success( ' My message success ' );
Warn( ' My message warn ' );
Error( ' My message error ' );
Fatal( ' My message fatal ' );
Custom( ' My Type ' , ' My message custom ' );
Readln;
end .
العرف هي الطريقة لتحديد اسم لمستولك الخاص.
uses
DataLogger,
DataLogger.Provider.Console;
begin
Logger.AddProvider(TProviderConsole.Create);
Logger.SetTemplate( ' ${timestamp} [${level}] ${message} ' );
Logger.Custom( ' Custom Level ' , ' My message with custom level! ' );
// Output: 2022-12-01 09:00:05.500 [Custom Level] My message with custom level!
Readln;
end .الوظائف التي تعمل في البعض توفر.
// Pula uma linha
Logger.SlineBreak;
// Desfaz o último log registrado
Logger.UndoLast; وظيفة SlineBreak باستخدام لكسر الخط.
uses
DataLogger,
DataLogger.Provider.Console;
begin
Logger.AddProvider(TProviderConsole.Create);
// Definindo o template
Logger.SetTemplate( ' ${timestamp} [${level}] ${message} ' );
// Gerando os logs
Logger.Info( ' My message with level INFO ' );
Logger.SlineBreak;
Logger.Error( ' My message with level ERROR ' );
// Output: 2022-12-01 09:00:05.500 [INFO] My message with level INFO
// Output:
// Output: 2022-12-01 09:00:05.600 [ERROR] My message with level ERROR
Readln;
end . وظيفة UndoLast باستخدام التراجع عن السجل الأخير الذي تم تنفيذه.
uses
DataLogger,
DataLogger.Provider.Console;
begin
Logger.AddProvider(TProviderConsole.Create);
// Definindo o template
Logger.SetTemplate( ' ${timestamp} [${level}] ${message} ' );
// Gerando os logs
Logger.Info( ' My message with level INFO ' );
// Output: 2022-12-01 09:00:05.500 [INFO] My message with level INFO
Sleep( 4000 );
Logger.UndoLast;
Logger.Error( ' My message with level ERROR ' );
// Output: 2022-12-01 09:00:05.600 [ERROR] My message with level ERROR
Readln;
end .القالب هو التنسيق الذي سيتم إنشاؤه السجل.
القالب القياسي:
$ { timestamp } [TID $ { thread_id } ] [PID $ { process_id } ] [SEQ $ { sequence } ] [$ { level } ] [$ { tag } ] $ { message }هناك بعض الثوابت التي يمكن استخدامها لتسهيل إنشاء القالب.
// Exibe o id que foi gerado o log, no formato GUID
TLoggerTemplate.LOG_ID = ' ${id} ' ;
// Exibe o nome do log. ex: Logger.SetName('SERVICE_REMOTE')
TLoggerTemplate.LOG_NAME = ' ${name} ' ;
// Exibe a sequencia que o log foi gerado.
TLoggerTemplate.LOG_SEQUENCE = ' ${sequence} ' ;
// Exibe a data e hora que foi gerado, usado o SetFormatTimestamp
TLoggerTemplate.LOG_TIMESTAMP = ' ${timestamp} ' ;
// Exibe a data e hora que foi gerado, no formato ISO8601.
TLoggerTemplate.LOG_TIMESTAMP_ISO8601 = ' ${timestamp_iso8601} ' ;
// Exibe a data e hora que foi gerado, no formato UNIX.
TLoggerTemplate.LOG_TIMESTAMP_UNIX = ' ${timestamp_unix} ' ;
// Exibe o Id da thread que foi gerado o log.
TLoggerTemplate.LOG_THREADID = ' ${thread_id} ' ;
// Exibe o id do processo do app.
TLoggerTemplate.LOG_PROCESSID = ' ${process_id} ' ;
// Exibe o level do log, sendo eles: TRACE / DEBUG / INFO / SUCCESS / WARN / ERROR / FATAL
TLoggerTemplate.LOG_LEVEL = ' ${level} ' ;
// Exibe o level do log no formato numérico, sendo eles: 1=TRACE / 2=DEBUG / 3=INFO / 4=SUCCESS / 5=WARN / 6=ERROR / 7=FATAL / 8=CUSTOM
TLoggerTemplate.LOG_LEVEL_VALUE = ' ${level_value} ' ;
// Exibe a tag do log, essa informação é preenchida a após a mensagem; Ex: Logger.Debug('Minha mensagem','Minha Tag');
TLoggerTemplate.LOG_TAG = ' ${tag} ' ;
// Exibe a mensagem do log, sem essa tag a mensagem não é exibida. Ex: Logger.Debug('Minha mensagem');
TLoggerTemplate.LOG_MESSAGE = ' ${message} ' ; // Exibe o nome do app.
TLoggerTemplate.LOG_APPNAME = ' ${app_name} ' ;
// Exibe o diretório do app.
TLoggerTemplate.LOG_APPPATH = ' ${app_path} ' ;
// Exibe a versão do app.
TLoggerTemplate.LOG_APPVERSION = ' ${app_version} ' ;
// Exibe o tamanho do app em MB.
TLoggerTemplate.LOG_APPSIZE = ' ${app_size} ' ;
// Exibe o nome do computador.
TLoggerTemplate.LOG_COMPUTERNAME = ' ${computer_name} ' ;
// Exibe o nome do usuário do Sistema Operacional.
TLoggerTemplate.LOG_USERNAME = ' ${username} ' ;
// Exibe as informações do Sistema Operacional.
TLoggerTemplate.LOG_OSVERSION = ' ${os_version} ' ;
// Exibe o IP Local.
TLoggerTemplate.LOG_IP_LOCAL = ' ${ip_local} ' ;
// Exibe o MAC Address.
TLoggerTemplate.LOG_MAC_ADDRESS = ' ${mac_address} ' ;
يحدد السجل الذي سيتم تسجيله
uses
DataLogger,
DataLogger.Provider.Console;
begin
Logger.AddProvider(TProviderConsole.Create);
// Definindo o template
Logger.SetTemplate( ' ${timestamp} [${level}] ${message} ' );
// Definindo o template com constante
Logger.SetTemplate(Format( ' %s [%s] %s ' , [TLoggerTemplate.LOG_TIMESTAMP, TLoggerTemplate.LOG_LEVEL, LoggerTemplate.LOG_MESSAGE]));
// Gerando os logs
Logger.Info( ' My message with level INFO ' );
Logger.Error( ' My message with level ERROR ' );
// Output: 2022-12-01 09:00:05.500 [INFO] My message with level INFO
// Output: 2022-12-01 09:00:05.600 [ERROR] My message with level ERROR
Readln;
end . uses
DataLogger,
DataLogger.Provider.Console,
DataLogger.Provider.TextFile;
begin
// Formato do console '${timestamp} [${level}] ${message}'
Logger.AddProvider(
TProviderConsole.Create
.SetTemplate( ' ${timestamp} [${level}] ${message} ' )
);
// Formato do text file '${timestamp} - ${message}'
Logger.AddProvider(
TProviderTextFile.Create
.SetTemplate( ' ${timestamp} - ${message} ' )
);
// Gerando os logs
Logger.Info( ' My message with level INFO ' );
Logger.Error( ' My message with level ERROR ' );
// Output Console:
// 2022-12-01 09:00:05.500 [INFO] My message with level INFO
// 2022-12-01 09:00:05.600 [ERROR] My message with level ERROR
// Output TextFile:
// 2022-12-01 09:00:05.500 - My message with level INFO
// 2022-12-01 09:00:05.600 - My message with level ERROR
Readln;
end .يغير شكل الطابع الزمني.
yyyy-mm-dd hh:mm:ss.zzz uses
DataLogger,
DataLogger.Provider.Console;
begin
Logger.AddProvider(TProviderConsole.Create);
// Definindo o formato do Timestamp
Logger.SetFormatTimestamp( ' dd/mm/yyyy hh:mm:ss ' )
// Definindo o template
Logger.SetTemplate( ' ${timestamp} [${level}] ${message} ' );
// Definindo o template com constante
Logger.SetTemplate(Format( ' %s [%s] %s ' , [TLoggerTemplate.LOG_TIMESTAMP, TLoggerTemplate.LOG_LEVEL, LoggerTemplate.LOG_MESSAGE]));
// Gerando os logs
Logger.Info( ' My message with level INFO ' );
Logger.Error( ' My message with level ERROR ' );
// Output: 01/12/2022 09:00:05 [INFO] My message with level INFO
// Output: 01/12/2022 09:00:05 [ERROR] My message with level ERROR
Readln;
end .يحتوي Datalogger على هذه المستويات لإنشاء السجلات :
Logger.Trace( ' ' );
Logger.Debug( ' ' );
Logger.Info( ' ' );
Logger.Success( ' ' );
Logger.Warn( ' ' );
Logger.Error( ' ' );
Logger.Fatal( ' ' );
Logger.Custom( ' ' );
// Modo simplificado
Logger.T( ' ' ); // TRACE
Logger.D( ' ' ); // DEBUG
Logger.I( ' ' ); // INFO
Logger.S( ' ' ); // SUCCESS
Logger.W( ' ' ); // WARN
Logger.E( ' ' ); // ERROR
Logger.F( ' ' ); // FATAL
Logger.C( ' ' ); // CUSTOM من الممكن تغيير وصف المستوى إلى وصف آخر.
uses
DataLogger,
DataLogger.Provider.Console;
begin
Logger.AddProvider(TProviderConsole.Create);
// Definindo o template
Logger.SetTemplate( ' ${timestamp} [${level}] ${message} ' );
// Definindo o Level
Logger.SetLevelName(TLoggerLevel.Info, ' INFORMATION ' );
Logger.SetLevelName(TLoggerLevel.Warn, ' WARNING ' );
// Gerando os logs
Logger.Info( ' My message with level INFO ' );
Logger.Warn( ' My message with level WARN ' );
// Output: 2022-12-01 09:00:05.600 [INFORMATION] My message with level INFO
// Output: 2022-12-01 09:00:05.600 [ WARNING ] My message with level WARN
Readln;
end . من الممكن إظهار السجلات فقط من مستوى محدد ، استنادًا إلى TLoggerLevel .
القيمة الافتراضية setlevel = TLoggerLevel.All
Logger.SetLevel(TLoggerLevel.Warn); - سيتم تسجيل سجلات فقط مع Warn / Error / Fatal / Custom . TLoggerLevel. All = ' Utilizado para operações internas '
TLoggerLevel.Trace = ' Level 1 '
TLoggerLevel.Debug = ' Level 2 '
TLoggerLevel.Info = ' Level 3 '
TLoggerLevel.Success = ' Level 4 '
TLoggerLevel.Warn = ' Level 5 '
TLoggerLevel.Error = ' Level 6 '
TLoggerLevel.Fatal = ' Level 7 '
TLoggerLevel.Custom = ' Level 8 ' uses
DataLogger,
DataLogger.Provider.Console;
begin
Logger.AddProvider(TProviderConsole.Create);
// Definindo o template
Logger.SetTemplate( ' ${timestamp} [${level}] ${message} ' );
// Definindo o Level
Logger.SetLevel(TLoggerLevel.Warn);
// Gerando os logs
Logger.Info( ' My message with level INFO ' );
Logger.Error( ' My message with level ERROR ' );
// Output: 2022-12-01 09:00:05.600 [ERROR] My message with level ERROR
Readln;
end . من الممكن تعطيل بعض السجلات من السجل ، استنادًا إلى TLoggerLevel .
القيمة القياسية SetDisableVel = []
Logger.SetDisableLevel([TLoggerLevel.Info, TLoggerLevel.Warn]); - سيتم تسجيل سجلات فقط مع Tracer / Debug / Success / Error / Fatal / Custom . uses
DataLogger,
DataLogger.Provider.Console;
begin
Logger.AddProvider(TProviderConsole.Create);
// Definindo o template
Logger.SetTemplate( ' ${timestamp} [${level}] ${message} ' );
// Definindo o DisableLevel
Logger.SetDisableLevel([TLoggerLevel.Info, TLoggerLevel.Warn]);
// Gerando os logs
Logger.Debug( ' My message with level DEBUG ' );
Logger.Info( ' My message with level INFO ' );
Logger.Warn( ' My message with level WARN ' );
Logger.Error( ' My message with level ERROR ' );
// Output:
// 2022-12-01 09:00:05.500 [DEBUG] My message with level DEBUG
// 2022-12-01 09:00:05.600 [ERROR] My message with level ERROR
Readln;
end . من الممكن إظهار عدد قليل فقط من سجلات السجل ، استنادًا إلى TLoggerLevel .
القيمة الافتراضية setonlylevel = [TLoggerLevel.All]
Logger.SetOnlyLevel([TLoggerLevel.Error]); - سيتم تسجيل سجلات فقط مع نوع Error . uses
DataLogger,
DataLogger.Provider.Console;
begin
Logger.AddProvider(TProviderConsole.Create);
// Definindo o template
Logger.SetTemplate( ' ${timestamp} [${level}] ${message} ' );
// Definindo o OnlyLevel
Logger.SetOnlyLevel([TLoggerLevel.Error]);
// Gerando os logs
Logger.Debug( ' My message with level DEBUG ' );
Logger.Info( ' My message with level INFO ' );
Logger.Warn( ' My message with level WARN ' );
Logger.Error( ' My message with level ERROR ' );
// Output:
// 2022-12-01 09:00:05.600 [ERROR] My message with level ERROR
Readln;
end .من الممكن التقاط الاستثناءات التي تم إنشاؤها بواسطة توفير
القيمة الافتراضية setLogException = nil
uses
DataLogger,
DataLogger.Provider.Console;
begin
Logger.AddProvider(TProviderConsole.Create);
// Definindo o template
Logger.SetTemplate( ' ${timestamp} [${level}] ${message} ' );
// Definindo o LogException
Logger.SetLogException(
procedure( const Sender: TObject; const LogItem: TLoggerItem; const E: Exception; var RetriesCount: Integer)
begin
// Sender - Provider que gerou a exceção, para visualizar - Sender.ClassName
// LogItem - Contém todas as informações do log
// E - Contém as informações da exceção
// RetriesCount - Contém o número da tentativa realizada
// Caso seja alterado o valor para -1, o processo é interrompido
end
);
// Gerando o log
Logger.Error( ' My message with level ERROR ' );
// Output:
// 2022-12-01 09:00:05.600 [ERROR] My message with level ERROR
Readln;
end .من الممكن تحديد عدد المحاولات التي يجب على مقدم الخدمة محاولة حفظ السجل.
SetMaxReries القيمة القياسية = 5
uses
DataLogger,
DataLogger.Provider.Console;
begin
Logger.AddProvider(TProviderConsole.Create);
// Definindo o template
Logger.SetTemplate( ' ${timestamp} [${level}] ${message} ' );
// Definindo o máximo de tentativas
Logger.SetMaxRetries( 5 );
// Gerando o log
Logger.Error( ' My message with level ERROR ' );
// Output:
// 2022-12-01 09:00:05.600 [ERROR] My message with level ERROR
Readln;
end .من الممكن تجاهل القالب وحفظ جميع البيانات التي تم إنشاؤها بواسطة Datalogger ؛
SetIgnoreTemplate( { 1 } , { 2 } , { 3 } , { 4 } );
Parâmetros:
{ 1 } = (Boolean) = Defini se deve ignorar o Template.
{ 2 } = (string) = Defini qual texto vai fazer a separação das informações, semelhante ao CSV.
{ 3 } = (Boolean) = Defini se deve mostrar as palavras chaves de cada valor.
{ 4 } = (string) = Defini qual texto deve separar a palavra chave do valor.
Logger.SetIgnoreTemplate(True, ' | ' , True, ' -> ' );
{ palavra_chave } = " timestamp "
{ palavra_chave_separador } = " -> "
{ valor } = " 2022-09-15T14:39:38.896-03:00 "
{ separator } = " | "
// output timestamp -> 2022-09-15T14:39:38.896-03:00 | timestamp_format -> 2022-09-15 14:39:38.896 uses
DataLogger,
DataLogger.Provider.Console;
begin
Logger.AddProvider(TProviderConsole.Create);
// Definindo o template
Logger.SetTemplate( ' ${timestamp} [${level}] ${message} ' );
// Ignorando o log format
Logger.SetIgnoreTemplate(True, ' | ' , True, ' -> ' );
// Gerando o log
Logger.Error( ' My message with level ERROR ' );
// Output:
// timestamp -> 2022-09-15T14:39:38.896-03:00 | timestamp_format -> 2022-09-15 14:39:38.896 | name -> | sequence -> 1 | thread_id -> 3804 | level -> Trace | level_value -> 1 | tag -> | message -> My Trace | app_name -> ProviderTextFile | app_version -> 1.0.0.0 | app_path -> C:GithubDataLoggerSamplesTextFileWin32Debug | app_size -> 13,24 MB | computer_name -> DESKTOP-7RP1H3K | username -> danil | os_version -> Windows 10 (Version 21H2, OS Build 19044.1889, 64-bit Edition) | process_id -> 13608 | ip_local -> 192.168.56.1
Readln;
end .من الممكن تحديد اسم Datalogger الذي يمكن عرضه في سجل السجل. يمكن استخدام هذا الاسم للتمييز بين Datalogger عندما يكون أكثر من مثيل واحد.
SETNAME القيمة الافتراضية = EmptyStr
uses
DataLogger,
DataLogger.Provider.Console;
begin
Logger.AddProvider(TProviderConsole.Create);
// Definindo o template
Logger.SetTemplate( ' ${name} ${timestamp} [${level}] ${message} ' );
// Definindo o name
Logger.SetName( ' MyLogger ' );
// Gerando o log
Logger.Error( ' My message with level ERROR ' );
// Output:
// MyLogger 2022-12-01 09:00:05.600 [ERROR] My message with level ERROR
Readln;
end .من الممكن حفظ السجلات في الوقت الفعلي ، بحيث تستمر التعليمات التالية للرمز الخاص بك فقط بعد حفظ السجل!
يتم تسجيل السجلات حاليًا في الذاكرة ثم يتم حفظها دون قفل التطبيق.
القيمة القياسية setLiveMode = false
uses
DataLogger,
DataLogger.Provider.Console;
begin
Logger.AddProvider(TProviderConsole.Create);
// Definindo o template
Logger.SetTemplate( ' ${name} ${timestamp} [${level}] ${message} ' );
// Definindo o LiveMode
Logger.SetLiveMode(True);
// Gerando o log
Logger.Error( ' My message with level ERROR ' );
// Output:
// MyLogger 2022-12-01 09:00:05.600 [ERROR] My message with level ERROR
Readln;
end .من الممكن العمل مع المعاملة ، تمامًا كما هو مستخدم في مكونات أخرى مع اتصال قاعدة البيانات.
يمكن تطبيق استخدام هذا الإجراء على الموقف التالي ؛
دعنا نروي قصة صغيرة:
لدينا إجراء يقوم ، في كل خطوة ، يتم إنشاء العديد من معلومات السجل ، لذلك نقوم دائمًا بحفظ هذه المعلومات ، وهذا يجعل ملفنا النصي على سبيل المثال كبير جدًا.
تخيل الآن أن تكون قادرًا على حفظ البيانات فقط إذا كان هناك أي أخطاء أثناء التنفيذ أو عند الضرورة لحفظ البيانات حقًا.
يجب أن يتم تنشيط استخدام المعاملة بواسطة مزود مع وظيفة UseTransaction(True) .
السابق:
Logger.AddProvider(
TProviderConsole.Create
.UseTransaction(True) // Enable transaction only on this provider
);يبدأ معاملة جديدة.
يؤكد سجل جميع السجلات في المعاملة.
يلغي جميع السجلات الناتجة في المعاملة.
عينة مع المعاملة
uses
DataLogger,
DataLogger.Provider.Console;
begin
Logger.AddProvider(TProviderConsole.Create.UseTransaction(True));
// Definindo o template
Logger.SetTemplate( ' ${timestamp} [${level}] ${message} ' );
// Iniciando a transaction
Logger.StartTransaction;
Writeln( ' Iniciou a transaction ' );
// Gerando o log
Logger.Info( ' My message with level INFO 1 ' );
Logger.Info( ' My message with level INFO 2 ' );
Logger.Info( ' My message with level INFO 3 ' );
Logger.Info( ' My message with level INFO 4 ' );
Logger.Info( ' My message with level INFO 5 ' );
Logger.Info( ' My message with level INFO 6 ' );
Logger.Info( ' My message with level INFO 7 ' );
Logger.Info( ' My message with level INFO 8 ' );
Logger.Info( ' My message with level INFO 9 ' );
Writeln( ' Terminou os Logs ' );
// Fazendo o commit
Logger.CommitTransaction;
Writeln( ' Fez os commits ' );
Readln;
end .عينة مع معاملة متشابكة
تعطي المعاملات العشرية إمكانية زيادة الإدارة عند حفظ المعلومات.
uses
DataLogger,
DataLogger.Provider.Console;
begin
Logger.AddProvider(TProviderConsole.Create.UseTransaction(True));
// Definindo o template
Logger.SetTemplate( ' ${timestamp} [${level}] ${message} ' );
// Iniciando a transaction
Logger.StartTransaction;
try
// Gerando o log
Logger.Info( ' My message with level INFO 1 ' );
Logger.Info( ' My message with level INFO 2 ' );
Logger.Info( ' My message with level INFO 3 ' );
Logger.Info( ' My message with level INFO 4 ' );
// Iniciando 2 transaction
Logger.StartTransaction;
try
Logger.Info( ' My message with level INFO 5 ' );
Logger.Info( ' My message with level INFO 6 ' );
finally
// fazendo Rollback da segunda transaction
Logger.RollbackTransaction;
end ;
Logger.Info( ' My message with level INFO 7 ' );
Logger.Info( ' My message with level INFO 8 ' );
Logger.Info( ' My message with level INFO 9 ' );
finally
// Fazendo o commit
Logger.CommitTransaction;
end ;
Readln;
end .