
| Portugis Brasil | Bahasa Inggris |
Datalogger dirancang untuk menjadi perpustakaan log sederhana yang didukung oleh beberapa penyediaan .
Dukungan: [email protected]
$ boss install github.com/dliocode/dataloggerTambahkan folder berikut ke proyek Anda, di Project> Options> Delphi Compiler> Pencarian Path
../src/Core
../src/Providers
Ada dua cara berbeda untuk menggunakan Datalogger: langsung dengan Logger atau instantiasi TDataLogger Anda sendiri.
Sampel
Yang pertama hanya dimaksudkan untuk menjadi log bersama yang nyaman untuk digunakan di seluruh aplikasi Anda jika Anda memilih.
uses DataLogger;
Penyedia berfungsi pada dasarnya untuk menyimpan lognya. Setiap instance dari tdatalogger dapat memiliki beberapa penyediaan yang dikonfigurasi.
Di sini kami memiliki daftar 60 yang tersedia:
| Nama | Penggunaan | Contoh |
|---|---|---|
| AWS CloudWatch | Datalogger.provider.aws.cloudwatch | AWS CloudWatch |
| Aksioma | Datalogger.provider.axiom | Aksioma |
| CallMebot | Datalogger.provider.callmebot.whatsapp | CallMebot |
| Menghibur | Datalogger.provider.console | Menghibur Konsol sederhana |
| Coalogix | Datalogger.provider.cralogix | Coalogix |
| CSV | Datalogger.provider.csv | CSV |
| Datadatog | Datalogger.provider.dateg | Datadatog |
| Datalust | Datalogger.provider.datalust | Datalust |
| Perselisihan | Datalogger.provider.discord.webhook | Discordhook |
| Dynatrace | Tanggal logger.provider.dynatrace | Dynatrace |
| Elasticsearch | Datalogger.provider.elasticsearch | Elasticsearch |
| Ajari dia | Datalogger.provider.elmah | Ajari dia |
| Datalogger.provider.email | ||
| Log acara | Datalogger.provider.eventlog | Eventlog |
| Acara | Datalogger.provider.events | Acara Acara - dengan dataset Acara - dengan sqlite |
| Firebase | Tanggal Logger.Provider.firebase.Realtime Database | Firebase |
| Celah | Datalogger.provider.grafana.loki Datalogger.provider.grafana.oncall.webhook | Celah |
| Graphjson | Datalogger.provider.graphjson | Graphjson |
| Graylog | Datalogger.provider.graylog | Graylog |
| Html | Datalogger.provider.html | Html |
| ListBox | Datalogger.provider.listbox | ListBox |
| ListView | DATALOGGER.PROVIDER.LISTVIEW | ListView |
| Logentries | Datalogger.provider.logentries | Logentries |
| Logflare | Datalogger.provider.logflare | Logflare |
| Loggly | Datalogger.provider.loggly | Loggly |
| Logstash | Datalogger.provider.logstash | Logstash |
| Logthal | Datalogger.provider.logtail | Logthal |
| Logz | Datalogger.provider.logz | Logz |
| Mailgun | Datalogger.provider.mailgun.api | Mailgun |
| Mailjet | Datalogger.provider.mailjet.api | Mailjet |
| Mattemost | Datalogger.provider.mattemet Datalogger.provider.mattemost.webhooks | Mattemost Mattemosthook |
| Memo | Datalogger.provider.memo | Memo Memo dan file teks Memo - Only Error/VCL |
| Ingatan | Datalogger.provider.memory | Ingatan |
| Mezma | Datalogger.provider.mezmo | Mezma |
| Mongodb | Datalogger.provider.mongodb.cloud | Mongodb |
| Ntfy | Datalogger.provider.ntfy | Ntfy |
| Newrelic | Datalogger.provider.newrelic | Newrelic |
| Pemberitahuan | Datalogger.provider.notification | Pemberitahuan |
| Baru | Datalogger.provider.novu | Baru |
| OutputDebugstring | Datalogger.provider.outputDebugstring | OutputDebugstring |
| Kertas | Datalogger.provider.papertrail | Kertas |
| Cap pos | Datalogger.provider.postmark.api | Cap pos |
| Rabbitmq | Datalogger.provider.rabbitmq | Rabbitmq |
| Redis | Datalogger.provider.redis | Redis |
| Istirahat | Datalogger.provider.rest.httpClient Datalogger.provider.rest.indy Datalogger.provider.rest.nethttpClient | Istirahat |
| Kaya | Datalogger.provider.richedit | Kaya |
| 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 |
| Kendur | Datalogger.provider.slack.webapi Datalogger.provider.slack.webhook | Kendur |
| Splunk | Datalogger.provider.splunk | Splunk |
| Stopkontak | Datalogger.provider.socket | Stopkontak |
| Sumologis | Datalogger.provider.sumologic | Sumologis |
| Syslog | Datalogger.provider.syslog Datalogger.provider.syslog.indy | Syslog Syslog Indy |
| Telegram | Datalogger.provider.telegram | 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 |
Ketergantungan ini terjadi ketika beberapa memberikan penggunaan
| Penyedia | Bergantung |
|---|---|
| Datalogger.provider.rabbitmq | Rabbitmq |
| Datalogger.provider.redis | Redis |
| Datalogger.provider.sendemail | Sendemail |
Izin Access_wifi_State Diperlukan: Digunakan untuk menangkap alamat MAC Perangkat.
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 .
Kustom adalah cara untuk mendefinisikan nama untuk level Anda sendiri.
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 .Fungsi yang beroperasi dalam beberapa menyediakan.
// Pula uma linha
Logger.SlineBreak;
// Desfaz o último log registrado
Logger.UndoLast; Fungsi SlineBreak menggunakan untuk memecahkan garis.
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 . Fungsi UndoLast menggunakan untuk membatalkan rekaman terakhir yang dilakukan.
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 .Templat adalah format yang akan dihasilkan log.
Template Standar:
$ { timestamp } [TID $ { thread_id } ] [PID $ { process_id } ] [SEQ $ { sequence } ] [$ { level } ] [$ { tag } ] $ { message }Ada beberapa konstanta yang dapat digunakan untuk memfasilitasi penciptaan templat.
// 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} ' ;
Mendefinisikan format yang akan direkam log
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 .Itu mengubah bentuk cap waktu.
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 memiliki level ini untuk menghasilkan log :
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 Dimungkinkan untuk mengubah deskripsi level ke deskripsi lain.
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 . Dimungkinkan untuk hanya menampilkan log dari level yang ditentukan, berdasarkan TLoggerLevel .
Setlevel nilai default = TLoggerLevel.All
Logger.SetLevel(TLoggerLevel.Warn); - Hanya log yang akan direkam dengan 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 . Dimungkinkan untuk menonaktifkan beberapa log dari log, berdasarkan TLoggerLevel .
SetDisablevel Nilai standar = []
Logger.SetDisableLevel([TLoggerLevel.Info, TLoggerLevel.Warn]); - Hanya log yang akan terdaftar dengan 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 . Dimungkinkan untuk menampilkan hanya beberapa log log, berdasarkan pada TLoggerLevel .
SetOnlyLevel nilai default = [TLoggerLevel.All]
Logger.SetOnlyLevel([TLoggerLevel.Error]); - Hanya log yang akan direkam dengan jenis 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 .Dimungkinkan untuk menangkap pengecualian yang dihasilkan oleh menyediakan
SetLogException nilai default = 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 .Dimungkinkan untuk menentukan jumlah upaya yang harus dicoba oleh penyedia untuk menyimpan log.
Setmaxreries nilai standar = 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 .Dimungkinkan untuk mengabaikan templat dan menyimpan semua data yang dihasilkan oleh 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 .Dimungkinkan untuk mendefinisikan nama untuk Datalogger yang dapat ditampilkan dalam catatan log. Nama ini dapat digunakan untuk membedakan Datalogger ketika lebih dari satu contoh.
Setname nilai default = 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 .Dimungkinkan untuk menyimpan log secara real time, sehingga instruksi berikutnya dari kode Anda hanya akan berlanjut setelah log disimpan!
Saat ini log dicatat dalam memori dan kemudian disimpan tanpa mengunci aplikasi.
SetliveMode nilai standar = 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 .Dimungkinkan untuk bekerja dengan transaksi , seperti yang digunakan dalam komponen lain dengan koneksi database.
Penggunaan prosedur ini dapat diterapkan pada situasi berikut;
Ayo ceritakan sedikit cerita:
Kami memiliki prosedur yang melakukan, pada setiap langkah, beberapa informasi log dihasilkan, jadi kami selalu menyimpan informasi ini, ini membuat file teks kami misalnya terlalu terlalu besar.
Sekarang bayangkan bisa menyimpan data hanya jika ada kesalahan selama eksekusi atau bila perlu untuk benar -benar menyimpan data.
Aktivasi penggunaan transaksi harus dilakukan oleh penyedia dengan fungsi UseTransaction(True) .
Mantan:
Logger.AddProvider(
TProviderConsole.Create
.UseTransaction(True) // Enable transaction only on this provider
);Ini memulai transaksi baru.
Mengkonfirmasi catatan semua log dalam transaksi.
Membatalkan semua log yang dihasilkan dalam transaksi.
Sampel dengan transaksi
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 .Sampel dengan transaksi terletak
Transaksi Nestile memberikan kemungkinan manajemen yang lebih besar saat menyimpan informasi.
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 .