
Delphi (Delphi XE6 - Delphi 12 Atenas)/Freepascal (Trunk)/. Biblioteca Net (Windows/Linux/Android/MacOSX/IOS) para iniciar sesión en múltiples proveedores:
¡Por favor "establezca" este proyecto en Github! No cuesta nada pero ayuda a hacer referencia al código. 
Si encuentra útil este proyecto, considere hacer una donación.
10.2024 de febrero Rad Studio 12 compatible con
22 de noviembre de 2021 Rad Studio 11 compatible con
30,2020 de mayo: Rad Studio 10.4 compatible con
02,2020 de mayo: proveedor de Twilio
25,2020 de abril: formato de salida personalizado y soporte de etiquetas personalizadas
24,2020 de abril: proveedor de centinela
14 de septiembre de 2019: Nueva información opcional de registro incluida: Threadid.
11 de septiembre de 2019: ahora incluido en Rad Studio Getit Package Manager.
28 de marzo de 2019: gancho de excepciones no controladas
28 de marzo de 2019: Información de excepción mejorada
16 de marzo de 2019: Proveedor de GrayLog
28 de febrero de 2019: proveedor de InfluxDB
26 de febrero de 2019: proveedor de elasticsearch
25 de febrero de 2019: proveedor de Logstash
19 de febrero de 2019: Compatilización de Delphi Linux.
10 de febrero de 2019: Compatibilidad de Firemonkey OSX e IOS.
Dic 08,2018: Cargar/guardar la configuración de los proveedores de JSON único
Dic 07,2018: Delphi 10.3 Río Soporte
11,2018 de septiembre: la compatibilidad de Android de Firemonkey mejoró
04,2018 de julio: DLL nativo y cable de guerra .NET (gracias a Turrican)
29,2018 de junio: Configuración de/a JSON
15 de junio de 2018: proveedor de syslog.
28 de mayo de 2018: proveedor de holgures.
27 de mayo de 2018: proveedor de ADODB.
27 de mayo de 2018: proveedor de telegramas.
25 de mayo de 2018: Msg de salida personalizado.
22 de mayo de 2018: apoyo de alces.
20 de mayo de 2018: Soporte de Delphinus.
20 de mayo de 2018: salida JSON con campos opcionales para Redis y proveedores de REST.
17 de mayo de 2018: Compatibilidad Freepascal Linux.
02,2018 de mayo: Compatibilidad de Windows Freepascal.
El registrador rápido es asíncrono. Todos los registros se envían a una cola y no comprometen el flujo de su aplicación. Puede definir muchos proveedores para enviar cada entrada de registro y decidir qué nivel acepta cada uno.
program
{ $APPTYPE CONSOLE }
uses
Quick.Logger:
Quick.Logger.Provider.Files;
Quick.Logger.Provider.Console;
begin
// Add Log File and console providers
Logger.Providers.Add(GlobalLogFileProvider);
Logger.Providers.Add(GlobalLogConsoleProvider);
// Configure provider options
with GlobalLogFileProvider do
begin
FileName := ' .Logger.log ' ;
DailyRotate := True;
MaxFileSizeInMB := 20 ;
LogLevel := LOG_ALL;
Enabled := True;
end ;
with GlobalLogConsoleProvider do
begin
LogLevel := LOG_DEBUG;
ShowEventColors := True;
Enabled := True;
end ;
Log( ' Test entry ' ,etInfo);
Log( ' Test number: %d ' ,[ 1 ],etWarning);
end .Quicklogger administra automáticamente el registrador y los proveedores. Logger y los proveedores tienen una clase global, creada y lanzada automáticamente en Cerrar su aplicación. Solo necesita agregar proveedores buscados a su cláusula de usos.
Nota: Debe agregar casi un proveedor para enviar registro.
Properties:
- **Providers:** List of providers to send logs.
- **OnProviderError:** Event to receive provider error notifications.
- **RedirectOwnErrorsToProvider:** Select provider to get all provider notification errors.
- **WaitForFlushBeforeExit:** Number of seconds logger allowed to flush queue before closed.
- **QueueCount:** Queued items in main queue.
- **ProvidersQueueCount:** Queued items in providers queue (all providers).
- **OnQueueError:** Event for receive queue errors.
- **IsQueueEmpty:** Check if main queue or any provider queue has items pending to process.
Hay una variedad de tipos de eventos que puede definir en sus registros: Etheader, etinfo, etsuccess, Etwarning, Eterer, etcritical, Etexception, Etdebug, Ettrace, etcustom1, etcustom2.
Cada proveedor de registradores se puede configurar para escuchar uno o más de estos tipos de eventos y limitar el número de eventtypes recibidos recibidos para una variedad de eventtypes por día, hora, minuto o segundo para evitar problemas de rendimiento o ser enviados por correo electrónico.
Los proveedores administran la salida para sus registros. La salida puede ser archivos, consola, correo electrónico, etc. Si un proveedor no fallas muchas veces en enviar un registro, se deshabilitará automáticamente (disco completo, servidor remoto hacia abajo, etc.). Los límites se pueden especificar por proveedor. Los proveedores tienen una propiedad para cambiar la propiedad de configuración de formato de tiempo a sus necesidades. Cada proveedor tiene un registro de cola para recibir elementos de registro, pero se puede deshabilitar para permitir la escritura/envío directo. Hay algunos eventos para controlar a los proveedores (OnRestart, OncriticalError, Onsendlimits, etc.).
Hay algunos proveedores predefinidos, pero puede hacer su propio proveedor si es necesario:
Proveedor de archivos:
Quick.logger.provider.files: envía registro a un archivo, administrando la rotación y la compresión del registro.
Propiedades:
Proveedor de consola:
Quick.logger.provider.console: envía registro a la consola, permitiendo que los Tipos de eventos de colores y la marca de tiempo.
Propiedades:
Proveedor de correo electrónico:
Quick.logger.provider.email: envía registro por correo electrónico.
Propiedades:
Proveedor de eventos:
Quick.logger.provider.events: permite lanzar un evento para cada elemento de registro recibido.
Propiedades:
Proveedor de depuración IDE:
Quick.logger.provider.idedebug: envía los mensajes de depuración de registro a IDE.
Propiedades:
Proveedor de Windows EventLog:
Quick.logger.provider.eventlog: envía registro a Windows EventLog.
Propiedades:
Proveedor de descanso HTTP:
Quick.logger.Provider.Rest: envía registro a RestServer como un puesto JSON.
Propiedades:
Proveedor de Redis:
Quick.logger.provider.redis: envía registro al servidor Redis.
Propiedades:
Proveedor de memoria:
Quick.logger.Provider.Memory: Guarda el inicio de sesión en la memoria.
Propiedades:
Proveedor de telegrama:
Quick.logger.provider.telegram: envíe el registro como mensaje al canal de telegrama público/privado. (Necesitas token de un bot en este canal)
Propiedades:
Proveedor Slack:
Quick.logger.provider.slack: envíe el registro como un mensaje al canal de holgura pública/privada.
Propiedades:
Proveedor de ADODB:
Quick.logger.Provider.adoDB: Guarda el registro en la base de datos ADO (MSSQL, MSACCESS, etc.)
Propiedades:
Proveedor de syslog:
Quick.logger.provider.syslog: envía registro al servidor syslog.
Propiedades:
Proveedor de Logstash:
Quick.logger.provider.logstash: envía registro al servicio Logstash.
Propiedades:
Proveedor de ElasticSearch:
Quick.logger.provider.elasticsearch: envía registro al servidor Elasticsearch.
Propiedades:
Proveedor de InfluxDB:
Quick.logger.provider.influxDB: envía registro a la base de datos InfluxDB.
Propiedades:
Proveedor de GrayLog:
Quick.logger.Provider.GrayLog: envía registro al servicio GrayLog.
Propiedades:
Proveedor Sentry:
Quick.logger.provider.sentry: envía registro al servicio Sentry.
Propiedades:
Proveedor de Twilio:
Quick.logger.provider.twilio: envía registro al servicio Twilio.
Propiedades:
Quicklogger permite seleccionar qué información registrar. Puede incluir el nombre de host, la versión del sistema operativo, el nombre de la aplicación, la plataforma o el entorno (producción, la prueba, etc.), Threadid, ProcessID y otros campos (para ser compatible con multienvirmentos o múltiplesevicios). Es más evidente para un registro remoto como Redis o REST, pero el proveedor de archivos se puede escribir un encabezado con estos campos si lo desea.
Propiedades:
GlobalLogConsoleProvider.IncludedInfo := [iiAppName,iiHost,iiEnvironment,iiPlatform];
GlobalLogConsoleProvider.IncludedTags := [ ' MyTag1 ' , ' MyTag2 ' ];GlobalLogRedisProvider.CustomMsgOutput := True;
Log( ' {"level":"warn","text":"my text"} ' ,etInfo);GlobalLogConsoleProvider.CustomMsgOutput := True;
GlobalLogConsoleProvider.CustomFormatOutput := ' %{DATE} & %{TIME} - [%{LEVEL}] : %{MESSAGE} (%{MYTAG1}) ' ;Quicklogger tiene muchas variables predefinidas, pero puede definir sus propias etiquetas para usar en formato de salida personalizado.
DateTime : ocurre el elemento de registro de fecha y hora
Fecha : se produce el artículo del registro de la fecha
Tiempo : se produce un elemento de registro de tiempo
Nivel : nivel o tipo de evento
Levelint : nivel como numérico
Mensaje : Mensaje enviado a Logger
Entorno : variable personalizable (normalmente producción, prueba, etc.)
Plataforma : variable personalizable (normalmente de escritorio, móvil, etc.)
AppName : Customizable Variable (por defecto establecido como nombre de archivo sin extensión)
APPVERSION : versión del archivo de aplicación
AppPath : ruta de ejecución de la aplicación
Nombre de host : nombre de la computadora
Nombre de usuario : nombre de usuario registrado
Osversion : versión del sistema operativo
CPUCORES : Número de núcleos de CPU
Threaid : elemento de registro de ID de hilo establecido
Logger.LogTags[ ' MODULE ' ] := ' Admin ' ;
GlobalLogConsoleProvider.CustomMsgOutput := True;
GlobalLogConsoleProvider.CustomFormatOutput := ' %{DATE} & %{TIME} - [%{LEVEL}] : %{MESSAGE} (%{MODULE}) ' ;Quicklogger puede importar o exportar configuración de/a formato JSON. Esta característica permite una manera fácil de preconfigurar a sus proveedores.
// Load single provider from json file
GlobalLogRedisProvider.LoadFromFile( ' C:logfileprovider.json ' );
// Save all providers to json file
Logger.Providers.SaveToFile( ' C:loggerconfig.json ' );
// Load all providers from json string
Logger.Providers.FromJson(json); Example multiprovider config file:
{"GlobalLogConsoleProvider":
{
"ShowEventColors": true,
"ShowTimeStamp": true,
"UnderlineHeaderEventType": false,
"Name": "TLogConsoleProvider",
"LogLevel": "[etHeader,etInfo,etSuccess,etWarning,etError,etCritical,etException,etDone,etCustom1,etCustom2]",
"TimePrecission": true,
"MaxFailsToRestart": 2,
"MaxFailsToStop": 10,
"CustomMsgOutput": false,
"UsesQueue": true,
"Enabled": true,
"SendLimits": {
"TimeRange": "slNoLimit",
"LimitEventTypes": "[]",
"MaxSent": 0
},
"AppName": "QuickLoggerDemo",
"Environment": "",
"PlatformInfo": "",
"IncludedInfo": "[iiAppName,iiHost]"
},
"GlobalLogFileProvider":
{
"FileName": "D:\LoggerDemo.log",
"AutoFileNameByProcess": false,
"MaxRotateFiles": 3,
"MaxFileSizeInMB": 10,
"DailyRotate": false,
"RotatedFilesPath": "",
"CompressRotatedFiles": false,
"ShowEventType": true,
"ShowHeaderInfo": true,
"UnderlineHeaderEventType": false,
"AutoFlush": false,
"Name": "TLogFileProvider",
"LogLevel": "[etInfo,etSuccess,etWarning,etError,etCritical,etException]",
"TimePrecission": false,
"MaxFailsToRestart": 2,
"MaxFailsToStop": 10,
"CustomMsgOutput": false,
"UsesQueue": true,
"Enabled": true,
"SendLimits": {
"TimeRange": "slNoLimit",
"LimitEventTypes": "[etInfo]",
"MaxSent": 0
},
"AppName": "QuickLoggerDemo",
"Environment": "",
"PlatformInfo": "",
"IncludedInfo": "[iiAppName,iiHost,iiUserName,iiOSVersion]"
}
}
Quicklogger puede capturar sus excepciones de aplicación. Hay 3 ganchos de excepción. Debe agregar una o más unidades a su cláusula de usos:
¿Quieres aprender Delphi o mejorar tus habilidades? Learndelphi.org