BKS.Logs 2.1.0-beta-26s36-1-383ca81d

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 GravaLog sã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 ApiService legado que usa StackTrace para inferir o contexto, até abordagens mais modernas como HttpLoggingHandler para clientes Refit e SoapLoggingInspector para WCF/SOAP no BKS.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:

  1. 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.
  2. Modernização: Padronizar o uso de DelegatingHandler (para HttpClient e Refit) e Behaviors/Inspectors (para WCF/SOAP) como a forma primária de registrar requisições e respostas de API, eliminando a necessidade de introspecção via StackTrace.
  3. 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.
  4. 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.
  5. 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.ApiCommons
Package Description
9
BKS.Padrao
Biblioteca compartilhada com contratos, modelos e regras de negócio comuns aos produtos BankSoft.
9
BKS.ApiCommons
Package Description
8
BKS.Padrao
Biblioteca compartilhada com contratos, modelos e regras de negócio comuns aos produtos BankSoft.
7
BKS.Acesso
Package Description
7
BKS.Padrao
Biblioteca compartilhada com contratos, modelos e regras de negócio comuns aos produtos BankSoft.
6
BKS.Acesso
Package Description
6
BKS.ApiCommons
Package Description
5
BKS.Acesso
Package Description
5
BKS.Padrao
Biblioteca compartilhada com contratos, modelos e regras de negócio comuns aos produtos BankSoft.
5
BKS.Integracoes
Biblioteca de integração com APIs externas
5
BKS.ApiCommons
Package Description
4
BKS.Acesso
Package Description
4

.NET Standard 2.0