BKS.Logs 2.1.0-alpha-26s32-5-7b93c551
BKS.Logs - Biblioteca Central de Logs
Visão Geral
Este repositório é o lar da nova biblioteca centralizada de logging da Banksoft, futuramente BKS.Logs. O objetivo principal deste projeto é unificar, padronizar e modernizar a forma como os logs de aplicação e de integração são tratados em todo o nosso ecossistema de software.
O Problema Atual
Atualmente, as implementações de log estão fragmentadas e inconsistentes em múltiplas soluções:
- Lógica Duplicada: Classes como
GravaLogsão copiadas e coladas em diferentes projetos (WebAppCartao,WebAppConsig), gerando dificuldade na manutenção. - Abordagens Mistas: Coexistem múltiplos padrões de implementação, desde o
ApiServicelegado que usaStackTracepara inferir o contexto, até abordagens mais modernas comoHttpLoggingHandlerpara clientesRefiteSoapLoggingInspectorparaWCF/SOAPnoBKS.ApiCommons. - Configuração Complexa: A descoberta de regras de log e a sua aplicação variam significativamente entre as aplicações mais antigas (WebApps) e as mais novas (WebAPIs), dependendo de uma combinação de atributos, reflexão e configurações no banco de dados.
- Falta de um Padrão Único: A ausência de uma biblioteca única força os desenvolvedores a reimplementar ou a escolher entre diferentes padrões, aumentando a complexidade e a probabilidade de erros.
A Solução Proposta: BKS.Logs
A biblioteca BKS.Logs irá abstrair e consolidar as melhores práticas já desenvolvidas, fornecendo um ponto único e coeso para a instrumentação de logs.
Principais Objetivos e Funcionalidades:
- Centralização: Consolidar toda a lógica de configuração, manipulação de contexto e gravação de logs baseados em NLog em um único pacote NuGet.
- Modernização: Padronizar o uso de
DelegatingHandler(paraHttpClienteRefit) eBehaviors/Inspectors(paraWCF/SOAP) como a forma primária de registrar requisições e respostas de API, eliminando a necessidade de introspecção viaStackTrace. - Contexto Explícito: Fortalecer o uso de um serviço de contexto, como o
ApiRequestContextService, para que o fluxo de log seja explícito e desacoplado da estrutura do código chamador. - Compatibilidade e Migração: Oferecer um caminho claro para migrar as aplicações existentes, substituindo as implementações antigas (
GravaLog,ApiService) pela nova biblioteca com o mínimo de alterações de código possível. - Configuração Simplificada: Unificar o snapshot versionado das regras, evitando consulta ao banco durante cada requisição e garantindo comportamento consistente entre as aplicações.
Este projeto representa um passo importante para aumentar a manutenibilidade, reduzir a complexidade técnica e garantir que nossos logs sejam robustos e consistentes em toda a plataforma.
Arquitetura do Log API
Showing the top 20 packages that depend on BKS.Logs.
| Packages | Downloads |
|---|---|
|
BKS.Padrao
Biblioteca compartilhada com contratos, modelos e regras de negócio comuns aos produtos BankSoft.
|
21 |
|
BKS.Acesso
Package Description
|
21 |
|
BKS.Integracoes
Biblioteca de integração com APIs externas
|
20 |
|
BKS.ApiCommons
Package Description
|
19 |
|
BKS.Padrao
Biblioteca compartilhada com contratos, modelos e regras de negócio comuns aos produtos BankSoft.
|
19 |
|
BKS.Acesso
Package Description
|
19 |
|
BKS.ApiCommons
Package Description
|
18 |
|
BKS.Padrao
Biblioteca compartilhada com contratos, modelos e regras de negócio comuns aos produtos BankSoft.
|
18 |
|
BKS.Acesso
Package Description
|
18 |
|
BKS.Padrao
Biblioteca compartilhada com contratos, modelos e regras de negócio comuns aos produtos BankSoft.
|
16 |
|
BKS.Acesso
Package Description
|
15 |
|
BKS.Padrao
Biblioteca compartilhada com contratos, modelos e regras de negócio comuns aos produtos BankSoft.
|
15 |
|
BKS.Padrao
Biblioteca compartilhada com contratos, modelos e regras de negócio comuns aos produtos BankSoft.
|
13 |
|
BKS.ApiCommons
Package Description
|
13 |
|
BKS.Acesso
Package Description
|
12 |
|
BKS.Padrao
Biblioteca compartilhada com contratos, modelos e regras de negócio comuns aos produtos BankSoft.
|
12 |
.NET Standard 2.0
- NLog (>= 6.1.2)
- NLog.Database (>= 6.0.3)
- NLog.Extensions.Logging (>= 6.1.2)
- System.Threading.Channels (>= 9.0.14)