
Delphi (Delphi Xe6 - Delphi 12 Atenas)/FreePasCal (tronco)/. Net (Windows/Linux/Android/Macosx/IOS) para registrar o log em fornecedores multi:
Por favor, "estrela" este projeto no Github! Custa nada além de ajuda a fazer referência ao código. 
Se você achar esse projeto útil, considere fazer uma doação.
10.2024 Rad Studio 12 de fevereiro suportado
22.2021 de novembro Rad Studio 11 suportado
30.2020 de maio: Rad Studio 10.4 suportado
02.2020 de maio: Provedor de Twilio
25.2020 de abril: Formato de saída personalizado e suporte de tags personalizados
24.2020 de abril: provedor de sentinela
14 de setembro de 2019: Novo opcional Incluído Informações de log: ThreadId.
11 de setembro de 2019: Agora incluído no Rad Studio Getit Package Manager.
28 de março de 2019: Exceções não tratadas Hook
28 de março de 2019: informações de exceção aprimoradas
16 de março de 2019: provedor de GrayLog
28 de fevereiro de 2019: Provedor de influxo
26 de fevereiro de 2019: Elasticsearch Provedor
25 de fevereiro de 2019: provedor de logstash
19 de fevereiro de 2019: Delphi Linux Compatilibity.
10 de fevereiro de 2019: Compatibilidade do Firemonkey OSX e iOS.
08 de dezembro de 2018: Carregar/salvar provedores Config de um único JSON
07 de dezembro de 2018: Delphi 10.3 Rio Suporte
11 de setembro de 2018: Compatibilidade do Android Firemonkey Melhorada
04 de julho de 2018: DLL nativo e .Net Warpper (graças ao Turrican)
29 de junho de 2018: Config de/para JSON
15 de junho de 2018: provedor de syslog.
28 de maio de 2018: Provedor de Slack.
27 de maio de 2018: Provedor Adodb.
27 de maio de 2018: provedor de telegrama.
25 de maio de 2018: MSG de saída personalizada.
22 de maio de 2018: suporte de alces.
20 de maio de 2018: Suporte para Delphinus.
20 de maio de 2018: Saída JSON com campos opcionais para fornecedores Redis e Rest.
17 de maio de 2018: Compatibilidade do FreePasCal Linux.
02 de maio de 2018: Compatibilidade do Windows Freepascal.
O Logger rápido é assíncrono. Todos os logs são enviados para uma fila e não comprometem seu fluxo de aplicação. Você pode definir muitos provedores para enviar todas as entradas de log e decidir qual nível aceita todos.
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 .O QuickLogger gerencia o Logger e os fornecedores automaticamente. Logger e provedores têm uma classe global, criada automaticamente e lançada em fechar seu aplicativo. Você só precisa adicionar provedores procurados à sua cláusula de uso.
NOTA: Você precisa adicionar quase um provedor para enviar o 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.
Há uma variedade de tipos de eventos que você pode definir em seus logs: eteader, etinfo, etsuccess, etwarning, eterror, etcrítico, etexception, etdebug, ettrace, etcustom1, etcustom2.
Todo provedor de madeireiro pode ser configurado para ouvir um ou mais desses tipos de eventos e limitar o número de tipos de eventos recebidos recebidos para uma variedade de tipos de eventos por dia, hora, minuto ou segundo para evitar problemas de desempenho ou ser spam.
Os fornecedores gerenciam a saída para seus logs. A saída pode ser arquivo, console, email etc. Se um provedor falhar muitas vezes para enviar um log, será desativado automaticamente (disco completo, servidor remoto para baixo etc.). Os limites podem ser especificados por provedor. Os provedores têm uma propriedade para alterar a propriedade de configurações de formato de tempo para suas necessidades. Todo provedor possui um log de filas para receber itens de log, mas pode ser desativado para permitir a gravação/envio direto. Existem alguns eventos para controlar os provedores de trabalho (Onrestart, OnCriticalError, Onsendlimits, etc.).
Existem alguns provedores predefinidos, mas você pode criar seu próprio provedor, se necessário:
Provedor de arquivos:
Quick.logger.provider.files: envia log para um arquivo, gerenciando a rotação e a compactação do log.
Propriedades:
Provedor de console:
Quick.logger.provider.console: envia o log para consolar, permitindo eventos coloridos e registro de data e hora.
Propriedades:
Provedor de e -mail:
Quick.logger.provider.Email: envia o registro por e -mail.
Propriedades:
Provedor de eventos:
Quick.logger.provider.events: permite lançar um evento para cada item de log recebido.
Propriedades:
Provedor de depuração da IDE:
Quick.logger.provider.idedEbug: envia o registro para mensagens de depuração do IDE.
Propriedades:
Provedor de eventos do Windows:
Quick.logger.provider.EventLog: envia o log para o Windows EventLog.
Propriedades:
Provedor de repouso HTTP:
Quick.logger.provider.rest: envia o log para Restserver como uma postagem JSON.
Propriedades:
Provedor de Redis:
Quick.logger.provider.redis: envia log para o servidor Redis.
Propriedades:
Provedor de memória:
Quick.logger.provider.memory: salva o login na memória.
Propriedades:
Provedor de telegrama:
Quick.logger.provider.telegram: envie log como uma mensagem para o canal público/privado. (Você precisa ser um token de um bot neste canal)
Propriedades:
Provedor de Slack:
Quick.logger.provider.slack: envie log como uma mensagem para o canal público/privado.
Propriedades:
Provedor Adodb:
Quick.logger.provider.adodb: salva o log no banco de dados ADO (msSQL, msaccess, etc.)
Propriedades:
Provedor de syslog:
Quick.logger.provider.syslog: envia log para o servidor syslog.
Propriedades:
Provedor de Logstash:
Quick.logger.provider.logstash: envia log para o serviço Logstash.
Propriedades:
Elasticsearch Provedor:
Quick.logger.provider.elticsearch: envia log para o Elasticsearch Server.
Propriedades:
Provedor do InfluxDB:
Quick.logger.provider.influxdb: envia log para o banco de dados do InfluxDB.
Propriedades:
Provedor de GrayLog:
Quick.logger.provider.graylog: envia o log para o Serviço Graylog.
Propriedades:
Provedor de sentinela:
Quick.logger.provider.Sentry: envia o registro para o serviço Sentry.
Propriedades:
Provedor de Twilio:
Quick.logger.provider.twilio: envia o log para o serviço Twilio.
Propriedades:
O QuickLogger permite selecionar quais informações registrarem. Você pode incluir o nome do host, versão do sistema operacional, nome do aplicativo, plataforma ou ambiente (produção, teste, etc.), ThreadID, ProcessId e outros campos (a ser compatível com vários ambientes ou multidos). É mais evidente para um registro remoto como Redis ou REST, mas o provedor de arquivos pode ser escrevendo um cabeçalho com esses campos, se você quiser.
Propriedades:
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}) ' ;O QuickLogger possui muitas variáveis predefinidas, mas você pode definir suas próprias tags para usar no formato de saída personalizado.
DateTime : Ocorre o item de log de data e hora
Data : o item de log de data ocorre
Tempo : o item de log de tempo ocorre
Nível : Nível ou Eventype
LevelInt : Nível como numérico
Mensagem : Mensagem enviada para Logger
Ambiente : variável personalizável (normalmente produção, teste, etc)
Plataforma : Variável personalizável (normalmente desktop, celular, etc)
AppName : variável personalizável (por padrão definido como nome do arquivo sem extensão)
AppVersion : versão do arquivo de aplicativo
AppPath : Application Run Path
Nome do host : nome do computador
Nome de usuário : nome de usuário registrado
OSVERSION : versão do sistema operacional
CPUCORES : Número de núcleos da CPU
THREAID : ID do ID do tópico Conjunto de itens de log
Logger.LogTags[ ' MODULE ' ] := ' Admin ' ;
GlobalLogConsoleProvider.CustomMsgOutput := True;
GlobalLogConsoleProvider.CustomFormatOutput := ' %{DATE} & %{TIME} - [%{LEVEL}] : %{MESSAGE} (%{MODULE}) ' ;O QuickLogger pode importar ou exportar a configuração do formato/para JSON. Esse recurso permite uma maneira fácil de pré -configurar seus provedores.
// 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]"
}
}
O QuickLogger pode capturar exceções do seu aplicativo. Existem 3 ganchos de exceção. Você precisa adicionar uma ou mais unidades à sua cláusula de uso:
Você quer aprender Delphi ou melhorar suas habilidades? LearnDelphi.org