
| Бразильский португальский | Английский |
DataLogger разработан, чтобы быть простой библиотекой журналов, поддерживаемой несколькими предоставлениями .
Поддержка: [email protected]
$ boss install github.com/dliocode/dataloggerДобавьте следующие папки в свой проект, в проекте> Параметры> Delphi Compiler> Поиск
../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 | Консоль Простая консоль |
| Coalgix | Datalogger.provider.cralogix | Coalgix |
| CSV | Datalogger.provider.csv | CSV |
| DataDatog | Datalogger.provider.dateg | DataDatog |
| DataLust | Datalogger.provider.datalust | DataLust |
| Раздор | Datalogger.provider.discord.webhook | Дискордхук |
| Dynatrace | Дата logger.provider.dynatrace | Dynatrace |
| Elasticsearch | Datalogger.provider.elasticsearch | Elasticsearch |
| Научить его | Datalogger.provider.elmah | Научить его |
| Электронная почта | Datalogger.provider.email | Электронная почта |
| Журнал событий | Datalogger.provider.eventlog | EventLog |
| События | Datalogger.provider.events | События События - с набором данных События - с SQLite |
| Пожарная база | Date Logger.provider.fireBase.Realtime База данных | Пожарная база |
| Зазор | Datalogger.provider.grafana.loki Datalogger.provider.grafana.oncall.webhook | Зазор |
| Графджсон | Datalogger.provider.graphjson | Графджсон |
| Грейлог | Datalogger.provider.graylog | Грейлог |
| HTML | Datalogger.provider.html | HTML |
| Списки | Datalogger.provider.listbox | Списки |
| ListView | Datalogger.provider.listView | ListView |
| Логи | Datalogger.provider.logentries | Логи |
| Logflare | Datalogger.provider.logflare | Logflare |
| Loggly | Datalogger.provider.loggly | Loggly |
| Logstash | Datalogger.provider.logstash | Logstash |
| Логал | Datalogger.provider.logtail | Логал |
| 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 |
| Меморандум | 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 |
| Пеферщ | Datalogger.provider.papertrail | Пеферщ |
| Почтовый ямет | Datalogger.provider.postmark.api | Почтовый ямет |
| Rabbitmq | Datalogger.provider.rabbitmq | Rabbitmq |
| Редис | Datalogger.provider.redis | Редис |
| Отдых | Datalogger.provider.rest.httpclient Datalogger.provider.rest.indy Datalogger.provider.rest.nethttpclient | Отдых |
| Richedit | Datalogger.provider.richedit | 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 | Пролечить |
| Разбрызгивать | Datalogger.provider.splunk | Разбрызгивать |
| Гнездо | Datalogger.provider.socket | Гнездо |
| Сумологический | Datalogger.provider.sumologic | Сумологический |
| Системный журнал | Datalogger.provider.syslog Datalogger.provider.syslog.indy | Системный журнал Syslog Indy |
| Телеграмма | Datalogger.provider.telegram | Телеграмма |
| Текстовыйфил | Datalogger.provider.textfile | Текстовыйфил |
| Ультрамсг | Datalogger.provider.ultramsg.whatsapp | Ультрамсг |
| Твилио | Datalogger.provider.twilio.sms Datalogger.provider.twilio.whatsapp | Твилио |
| Z-API | Datalogger.provider.zapi.whatsapp | Z-API |
Эти зависимости возникают, когда некоторые обеспечивают использование
| Поставщик | Зависит от |
|---|---|
| Datalogger.provider.rabbitmq | Rabbitmq |
| Datalogger.provider.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 Standard Value = []
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 .Образец с помощью сделки
Nestile Transactions дает возможность большего управления при сохранении информации.
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 .