
| Portugués brasileño | Inglés |
DataLogger está diseñado para ser una simple biblioteca de registro compatible con múltiples proporciones .
Soporte: [email protected]
$ boss install github.com/dliocode/dataloggerAgregue las siguientes carpetas a su proyecto, en Proyecto> Opciones> Compilador Delphi> Ruta de búsqueda
../src/Core
../src/Providers
Hay dos formas diferentes de usar Datalogger: directamente por Logger o instanciando su propio TDataLogger .
Muestras
El primero solo pretende ser un registro compartido conveniente para usar en toda su aplicación si lo desea.
uses DataLogger;
Un proveedor sirve esencialmente para almacenar sus registros. Cada instancia de un TDatalogger puede tener varios proporcionados configurados.
Aquí tenemos una lista de 60 proporciones disponibles:
| Nombre | Usos | Ejemplos |
|---|---|---|
| AWS CloudWatch | DataLogger.provider.aws.cloudwatch | AWS CloudWatch |
| Axioma | Datalogger.provider.axiom | Axioma |
| Callmebot | DataLogger.provider.callmebot.whatsapp | Callmebot |
| Consola | DataLogger.provider.console | Consola Consola simple |
| Coalogix | DataLogger.Provider.CRALOGIX | Coalogix |
| CSV | DataLogger.provider.csv | CSV |
| Datadatog | DataLogger.provider.dateg | Datadatog |
| Datalust | DataLogger.provider.datalust | Datalust |
| Discordia | DataLogger.provider.discord.webhook | Discordhook |
| Dinatracia | Fecha logger.provider.dyatrace | Dinatracia |
| Elasticsearch | DataLogger.provider.elasticsearch | Elasticsearch |
| Enseñarle | Datalogger.provider.elmah | Enseñarle |
| Correo electrónico | DataLogger.provider.email | Correo electrónico |
| Registro de eventos | DataLogger.provider.eventlog | Evidente |
| Eventos | DataLogger.provider.events | Eventos Eventos - con conjunto de datos Eventos - con SQLite |
| Firebase | Fecha logger.provider.firebase.realtime database | Firebase |
| Brecha | DataLogger.provider.grafana.loki DataLogger.provider.grafana.oncall.webhook | Brecha |
| Grafjson | DataLogger.provider.graphjson | Grafjson |
| GrayLog | DataLogger.provider.graylog | GrayLog |
| Html | DataLogger.provider.html | Html |
| Caja de listas | DataLogger.provider.listbox | Caja de listas |
| Listview | DataLogger.provider.listview | Listview |
| Logentries | DataLogger.provider.logentries | Logentries |
| Logflare | DataLogger.provider.logflare | Logflare |
| Logle | DataLogger.provider.loggly | Logle |
| Establo de registro | DataLogger.provider.logstash | Establo de registro |
| Logthal | DataLogger.provider.logtail | Logthal |
| Logz | DataLogger.provider.logz | Logz |
| Arma de correo | Datalogger.provider.mailgun.api | Arma de correo |
| Metra | DataLogger.Provider.MailJet.API | Metra |
| Mate | DataLogger.provider.mattemet DataLogger.provider.mattemost.webhooks | Mate Mattemosto |
| Memorándum | DataLogger.provider.memo | Memorándum Memo y archivo de texto Memo - Solo error/VCL |
| Memoria | DataLogger.Provider.Memory | Memoria |
| Mezma | DataLogger.provider.mezmo | Mezma |
| Mongodb | DataLogger.Provider.MongoDB.Cloud | Mongodb |
| Ntfy | DataLogger.provider.ntfy | Ntfy |
| Nuevo | DataLogger.provider.newrelic | Nuevo |
| Notificación | DataLogger.Provider.notificación | Notificación |
| Nuevo | DataLogger.provider.novu | Nuevo |
| OutputDebugString | DataLogger.provider.outputDebugString | OutputDebugString |
| Periódico | DataLogger.Provider.PaperTrail | Periódico |
| Matasellos | DataLogger.provider.postmark.api | Matasellos |
| Conejo | DataLogger.provider.rabbitmq | Conejo |
| Rehacer | DataLogger.provider.redis | Rehacer |
| Descansar | DataLogger.provider.rest.httpclient DataLogger.provider.rest.indy DataLogger.provider.rest.nethttpclient | Descansar |
| Rico | DataLogger.Provider.Richedit | Rico |
| Semateexto | DataLogger.provider.sematext.logs | Semateext-Logs |
| Sendchamp | DataLogger.provider.sendchamp.sms DataLogger.provider.sendchamp.whatsapp | Sendemail |
| Sendemail | DataLogger.Provider.sendemail | Sendemail |
| SendGrid | DataLogger.provider.sendgrid.webapi | SendGridWebapi |
| Flojo | DataLogger.provider.slack.webapi DataLogger.provider.slack.webhook | Flojo |
| Flojo | DataLogger.provider.splunk | Flojo |
| Enchufe | DataLogger.provider.socket | Enchufe |
| Sumológico | DataLogger.Provider.sumológico | Sumológico |
| Syslog | DataLogger.provider.syslog DataLogger.provider.syslog.indy | Syslog Syslog Indy |
| Telegrama | DataLogger.provider.telegram | Telegrama |
| Archivo de texto | DataLogger.provider.textfile | Archivo de texto |
| Ultramsg | DataLogger.Provider.Ultramsg.WhatsApp | Ultramsg |
| Twilio | DataLogger.provider.twilio.sms DataLogger.provider.twilio.whatsapp | Twilio |
| Z-API | DataLogger.provider.zapi.whatsapp | Z-API |
Estas dependencias ocurren cuando algunos proporcionan uso
| Proveedor | Depende |
|---|---|
| DataLogger.provider.rabbitmq | Conejo |
| DataLogger.provider.redis | Rehacer |
| DataLogger.Provider.sendemail | Sendemail |
Se requiere permiso access_wifi_state : Se utiliza para capturar la dirección MAC del dispositivo.
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 .
Custom es la forma de definir un nombre para su propio nivel .
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 .Funciones que operan en algunos proporcionan.
// Pula uma linha
Logger.SlineBreak;
// Desfaz o último log registrado
Logger.UndoLast; La función SlineBreak que se usa para romper la línea.
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 . La función UndoLast que usa para deshacer el último registro realizado.
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 .La plantilla es el formato que se generará el registro.
Plantilla estándar:
$ { timestamp } [TID $ { thread_id } ] [PID $ { process_id } ] [SEQ $ { sequence } ] [$ { level } ] [$ { tag } ] $ { message }Hay algunas constantes que pueden usarse para facilitar la creación de la plantilla.
// 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} ' ;
Define el formato que se registrará el registro
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 .Cambia la forma de la marca de tiempo.
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 tiene estos niveles para generar los registros :
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 Es posible cambiar la descripción del nivel a otra descripción.
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 . Es posible mostrar solo los registros de un nivel definido, basados en TLoggerLevel .
SetLevel Valor predeterminado = TLoggerLevel.All
Logger.SetLevel(TLoggerLevel.Warn); - Solo los registros se registrarán con 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 . Es posible deshabilitar algunos registros del registro, basados en TLoggerLevel .
SetDisable Value estándar = []
Logger.SetDisableLevel([TLoggerLevel.Info, TLoggerLevel.Warn]); - Solo los registros se registrarán con 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 . Es posible mostrar solo unos pocos registros del registro, basados en TLoggerLevel .
SetOnlyLevel valor predeterminado = [TLoggerLevel.All]
Logger.SetOnlyLevel([TLoggerLevel.Error]); - Solo los registros se registrarán con tipo 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 .Es posible capturar excepciones generadas por las proporciones
SetLogException valor predeterminado = 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 .Es posible definir el número de intentos que el proveedor debe intentar guardar el registro.
Setmaxreries valor estándar = 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 .Es posible ignorar la plantilla y guardar todos los datos generados por DataSalogger;
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 .Es posible definir un nombre para el DataSalogger que se puede mostrar en el registro de registro. Este nombre se puede utilizar para diferenciar el DataSalogger cuando más de una instancia.
Setname valor predeterminado = 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 .¡Es posible guardar los registros en tiempo real, de modo que la siguiente instrucción de su código solo continúe después de guardar el registro!
Actualmente, los registros se registran en la memoria y luego se guarda sin bloquear la aplicación.
SetLivEmode valor estándar = 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 .Es posible trabajar con la transacción , al igual que se usa en otros componentes con conexión de base de datos.
El uso de este procedimiento se puede aplicar a la siguiente situación;
Vamos a contar una pequeña historia:
Tenemos un procedimiento que está funcionando, en cada paso, se genera varias información de registro, por lo que siempre guardamos esta información, esto hace que nuestro archivo de texto sea demasiado grande.
Ahora imagine poder guardar los datos solo si hubo algún error durante la ejecución o cuando sea necesario para guardar realmente los datos.
El proveedor debe realizar la activación del uso de la transacción con la función UseTransaction(True) .
Ex:
Logger.AddProvider(
TProviderConsole.Create
.UseTransaction(True) // Enable transaction only on this provider
);Comienza una nueva transacción.
Confirma el registro de todos los registros en la transacción.
Cancela todos los registros generados en la transacción.
Muestra con transacción
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 .Muestra con transacción ubicada
Las transacciones de Nestile brindan la posibilidad de una mayor gestión al guardar la información.
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 .