Mudanças entre as edições de "RFWLogger"

De Wiki do Leitão
Ir para: navegação, pesquisa
(Criou página com 'O '''RFWLogger''' é um serviço de "log" do framework com o objetivo de realizar o registro de informações do sistema para os desenvolvedores. O desenvolvedor deve chamar o '''RFWLogger''' sempre que alguma informação quiser registrar alguma informação similar a qualquer outro framework de Log. Além da possibilidade de imprimir no console, este serviço permite que o log seja organizado em banco de dados para uma melhor filtragem e análise do fluxo por sessão d...')
 
Linha 26: Linha 26:
= Tags =
= Tags =


O FWLogEntry tem ainda um conjunto de Tags. Essas tags podem ser passadas pelo desenvolvedor durante a chamada do método .log*() para identificar os registros (permitindo filtros posteriores). Algumas tags são definidas automaticamente pelo próprio '''RFWLogger'''. Por exemplo:
O FWLogEntry tem ainda um conjunto de Tags. Essas tags podem ser passadas pelo desenvolvedor durante a chamada do método .log*() para identificar os registros (permitindo filtros posteriores). Algumas tags são definidas automaticamente pelo próprio '''RFWLogger'''. As tags automáticas são:
* Caso estejamos utilizando o [[RFWSessions]] para controlar a sessão de autenticação, o label do usuário é colocado como tag;
* Caso estejamos utilizando o [[RFWSessions]] para controlar a sessão de autenticação, o label do usuário é colocado como tag;
* Caso tenha sido inicializado no [[RFW]], o nome da aplicação também é colocado como uma tag;
* Caso tenha sido inicializado no [[RFW]], o nome da aplicação também é colocado como uma tag;
e assim por diante.

Edição das 13h14min de 17 de novembro de 2022

O RFWLogger é um serviço de "log" do framework com o objetivo de realizar o registro de informações do sistema para os desenvolvedores. O desenvolvedor deve chamar o RFWLogger sempre que alguma informação quiser registrar alguma informação similar a qualquer outro framework de Log. Além da possibilidade de imprimir no console, este serviço permite que o log seja organizado em banco de dados para uma melhor filtragem e análise do fluxo por sessão do usuário.


Stop 256.png
Log Recursivo Na Persistência
Um dos problemas do modelo do RFWLogger é que ele não permite que o RFWLogger seja utilizado nas classes que ele mesmo utiliza. Como no caso dos métodos do RFWInterceptor e do RFWDAO. Isso porque toda vez que o RFWLogger persistir os logs no banco, gerará novos Logs sobre a persistência, e assim por diante. Estes tipos de logs é recomendado continuar a utilizar o sistema de log em arquivo do servidor de aplicação.

É possível escrever um DAO exclusivo para o RFWLogger, eliminando o problema no RFWDAO, já o problema do SessionManager#SMInterceptor necessitaria uma fachada completa só para esse fim. Nada difícil ou impossível, mas não implementado por enquanto. Consulte a classe RFWpara saber como obter se está ou não em modo desenvolvimento.


O RFWLogger se integra com a aplicação permitindo que tudo seja registrado de forma a facilitar o debug e relatórios para o desenvolvedor. Como por exemplo, podem ser inclusos no log informações de sessão - quando essas informações ocorrem dentro de uma sessão de usuário - permitindo um filtro dos logs da sessão e obtendo o passo a passo somente daquele usuário.


Funcionamento

O RFWLogger é uma classe estática e pode ser usada a qualquer momento. Todas as chamadas aos métodos .log*() criam entradas de log automaticamente que ficam armazenadas em uma lista dentro do próprio RFWLogger.

O módulo não persiste nem salva seus logs em nenhum lugar além da memória. O sistema deve implementar e inicializar uma Thread que consume os logs, persistindo-os onde achar melhor (banco de dados, arquivos, etc.) o mais rápido possível para evitar o consumo da memória, e ao mesmo tempo cuidando para que esse evento não gere problemas de performance.

Em resumo o RFWLogger oferece uma simples ferramenta para abstrair a maneira de realizar logs em todo o sistema e deixar que o sistema implemente como fará a persistência e análise dessas informações.


Estrutura do Objeto de Log

Cada evento de Log é um objeto diferente, um RFWLogEntry. Esse objeto tem dois campos diferentes para salvar mensagens: message e content. A diferença entre eles é que message sempre carrega a informação que o usuário passou no método de .log*(), enquanto que content são informações maiores, como o print de um objeto, um XML, o Stack do método que chamou o log (dependendo da Severidade não é colocado).


Tags

O FWLogEntry tem ainda um conjunto de Tags. Essas tags podem ser passadas pelo desenvolvedor durante a chamada do método .log*() para identificar os registros (permitindo filtros posteriores). Algumas tags são definidas automaticamente pelo próprio RFWLogger. As tags automáticas são:

  • Caso estejamos utilizando o RFWSessions para controlar a sessão de autenticação, o label do usuário é colocado como tag;
  • Caso tenha sido inicializado no RFW, o nome da aplicação também é colocado como uma tag;