|
|
(11 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) |
Linha 1: |
Linha 1: |
| O BISLogger é um serviço de "log" do sistema com a função de realizar o registro de informações do sistema para os desenvolvedores. O desenvolvedor deve chamar o BISLogger sempre que alguma informação deva ser registrada ou informada para ajudar a encontrar problemas no sistema ou mesmo auxilia-lo durante a fase de desenvolvimento para visualizar o fluxo que o sistema tomou sem ter que debugar de linha em linha. Além da possibilidade de imprimir no console, este serviço é responsável por salvar em banco todas as informações necessárias em caso de erros e/ou outros acontecimentos do sistema. Distinguindo as informações importantes das desnecessárias para evitar um "flood" no banco de logs e transformando o BISLogger em um registro de uso do sistema. | | O BISLogger é a implementação do RFWLogger utilizada no BIS10. |
|
| |
|
| Com base nessas informações e em seu filtro de importância dos registros, o BISLogger é responsável também por filtrar e informar automaticamente a equipe de desenvolvimento sobre erros que acontecem no sistema sem que o usuário tenha que se incomodar com isso.
| | Para mais informações leia a documentação do RFWLogger. |
|
| |
|
| Os benefícios deste serviço é proporcionar a equipe de desenvolvimento informações mais precisas sobre os erros do que as informações desconexas normalmente provenientes dos usuários, além de ter certeza de ser notificado de toda falha do sistema. Evitando que usuários deixem de informar sobre os erros e acabem descontentes com o sistema.
| |
|
| |
|
| == Registro == | | = Utilização para Log = |
| === Registro de Mensagens de Texto ===
| |
| Na classe principal do BISLogger existem 4 métodos principais, estes registram mensagens em 4 categorias diferentes. São elas:
| |
| * '''error''' - É uma mensagem de problemas encontrados no sistema, algo anormal que deve ser levado em consideração.
| |
| * '''warn''' - Warning é uma mensagem de aviso, quando algo não está como esperado mas não deverá causar nenhum erro nos sistema. Já tem uma relevância maior que a info.
| |
| * '''info''' - Informações simples a serem exibidas no console para mostrar ao desenvolvedor sobre o que o sistema está fazendo, de forma genérica e mesmo sem muitos detalhes. Exatamente um "System Out".
| |
| * '''debug''' - Este tipo de mensagem é uma mensagem detalhada, com anotações dos objetos e detalhes da execução de um método. Geralmente usada para rastreamento preciso de algum erro que esteja acontecendo no sistema e não esteja simples de se detectar.
| |
|
| |
|
| === Registro de Mensagens Especiais ===
| | Por ser uma implementação baseada no RFWLogger, a utilização segue as as diretriz do RFWLogger e utiliza os métodos da própria classe do RFWLogger para registrar os eventos. |
|
| |
|
| * '''report''' - O tipo de registro Report é registrado separado do relatório da Thread padrão do BISLogger. Ele é identificado por um ID passado no primeiro parâmetro do método. Os registros sucessivos utilizando o mesmo ID de relatório serão somados em um único Log até que este seja finalizado por inatividade, ou forçado no shutdown/undeploy do sistema. Independente da Thread que o faça o log, todos os farão parte do mesmo relatório. A ideia é possibilitar o registro em um mesmo relatório quando o sistema está distribuído em Threads.
| |
|
| |
|
| === Registro de Exceptions ===
| |
| Além do registro de mensagens simples descritos anteriormente, o BISLogger apresenta métodos para registrar Exceções de forma simples! Basta chamar seu método e passar a exceção ocorrida, seu stack trace será recuperado e registrado junto com a mensagem.
| |
|
| |
|
| === Registro de VOs === | | = Funcionamento = |
| Em alguns casos pode haver a necessidade de se registrar os VOs completo do sistema para saber o que está causando o erro. Para tal o BISLogger dispõe de um método que lê e imprime qualquer VO do sistema. Neste caso deve ser descendente de BISDefaultVO.
| |
|
| |
|
| == Auto-Debugger ==
| | No BIS10, o RFWLogger, implementado através do BISLogger, tem o objetivo de transformar todos os registros de log em entradas no banco de dados. Com isso esperamos ganhar na agilidade de filtrar e criar relatórios específicos sobre os acontecimentos do sistema. |
| Com a finalidade de registrar em detalhes todas as informações importantes que acontecerem no sistema o BISLogger registrar todos os eventos relacionados a uma Thread em memória, e se antes do fim da Thread ocorrer o registro de alguma informação desejada (definida em configuração), como por exemplo uma exception, todo o LOG (incluindo msgs do tipo Debug, Info, etc.) será salvo em banco de dados e posteriormente enviado aos servidores do BISServer. Caso nada ocorra as informações serão descartadas sem que se ocupe espaço registrando informações desnecessárias.
| |
| É possível configurar o Auto-Debugger para saber quais dados são importantes para registro, verifique a sessão de Configuração para saber como.
| |
|
| |
|
| {{nota|Relatórios|O Auto-Debugger funciona independente das configurações de impressão das mensagens. Isto é, mesmo que as configurações não permitam que o BIS escreva no console o registro dos erros, o Auto-Debugger continuará registrando estas mensagens para reportar aos servidores.}}
| |
|
| |
|
| | Todos os logs realizados pelo RFWLogger são redirecionados através da implementação '''BISRFWLoggerImplementation''' para dentro do BISLogger. Já convertendo as entradas de log no objeto '''BISLoggerVO''' que é persistido no banco de dados. |
|
| |
|
| {{nota|BISValidationException|Quando as exceptions são da classe BISValidationException o BISLogger não faz registro automático (exceto se configurado para isso) e ignora como se não tivessem ocorrido exceptions. Isso porque não trata-se de um erro, mas sim de alguma falha de validação nos dados recebidos para processamento. Em outras palavras, as exceptions de validação não são tratadas junto com as demais exceptions do sistema. Para registrar toda e qualquer exception de Validation, o BISLogger deve ser explicitamente configurado.}}
| | O '''BISLogger''' armazena essas entradas temporariamente em memória, e a cada X tempo envia todos os objetos para serem persistidos no banco, livrando a memória. Essa operação é realizada por uma Thread que fica dentro do próprio '''BISLogger''', e pode ser inicializada de duas maneiras: |
| | * Ao registrar o primeiro objeto de log dentro da classe; ou, |
| | * Diretamente pelo método '''startPersistThread()'''. |
|
| |
|
|
| |
|
| {{nota|Nível de Registro das Mensagens|O Auto-Debugger funciona independente das configurações de impressão das mensagens. Isto é, mesmo que as configurações não permitam que o BIS escreva no console o registro dos erros, o Auto-Debugger continuará registrando estas mensagens para reportar aos servidores.}}
| | A thread não é do tipo Daemond, ou seja, não permitirá que o sistema se desligue enquanto ela estiver rodando. Este efeito é intencional, para obrigar o desenvolvedor a tratar o encerramento do registro de Logs sem que sejam interrompidos no meio. |
|
| |
|
|
| |
|
| == Configuração BISLogger ==
| | A thread termina utilizando o sistema de shutdown do RFW, ou seja, quando o método '''RFW.shutdownFW()''' for chamado. Ainda assim, após o encerramento de todo o sistema, alguns que também possam depender da mesma flag para se desligarem, é recomendado a chamada do método '''BISLogger.persistEntries()''' para garantir que não sobraram entradas pendentes. |
|
| |
|
| O BISLogger deve ser configurado no servidor, através das propriedades de sistema abaixo:
| |
|
| |
|
| <center>
| |
| {| class="wikitable" style="width:70%; align:center; text-align:center;"
| |
| ! colspan="2" | Propriedades de Configurações BISLogger
| |
| |-
| |
| ! Propriedade
| |
| ! Efeito
| |
| |-
| |
| |br.com.biserp.biscore.bislogger.systemout.info
| |
| |True para jogar no System.out todas as informações que forem logadas. False ignora.
| |
| |-
| |
| |br.com.biserp.biscore.bislogger.systemout.warn
| |
| |True para jogar no System.out todos os alertas que forem logados. False ignora.
| |
| |-
| |
| |br.com.biserp.biscore.bislogger.systemout.error
| |
| |True para jogar no System.out todos os erros que forem logados. False ignora.
| |
| |-
| |
| |br.com.biserp.biscore.bislogger.systemout.debug
| |
| |True para jogar no System.out todos os debugs que forem logados. False ignora.
| |
| |-
| |
| |br.com.biserp.biscore.bislogger.systemout.report
| |
| |True para jogar no System.out todos os reports que forem logados. False ignora.
| |
| |-
| |
| |br.com.biserp.biscore.bislogger.systemout.validations
| |
| |True para jogar no System.out todas as exceções de validação que forem logados. False ignora.
| |
| |-
| |
| |br.com.biserp.biscore.bislogger.systemout.exceptions
| |
| |True para jogar no System.out todas as exceções (exceto de validações) que forem logados. False ignora.
| |
| |-
| |
| |br.com.biserp.biscore.bislogger.systemout.vos
| |
| |True para jogar no System.out todos os VOs que forem logados. False ignora.
| |
| |-
| |
| |br.com.biserp.biscore.bislogger.autodebugger.info
| |
| |True para enviar para o BISServer todas as informações que forem logadas. False ignora.
| |
| |-
| |
| |br.com.biserp.biscore.bislogger.autodebugger.warn
| |
| |True para enviar para o BISServer todos os alertas que forem logados. False ignora.
| |
| |-
| |
| |br.com.biserp.biscore.bislogger.autodebugger.error
| |
| |True para enviar para o BISServer todos os erros que forem logados. False ignora.
| |
| |-
| |
| |br.com.biserp.biscore.bislogger.autodebugger.debug
| |
| |True para enviar para o BISServer todos os debugs que forem logados. False ignora.
| |
| |-
| |
| |br.com.biserp.biscore.bislogger.autodebugger.report
| |
| |True para enviar para o BISServer todos os reports que forem logados. False ignora.
| |
| |-
| |
| |br.com.biserp.biscore.bislogger.autodebugger.validations
| |
| |True para enviar para o BISServer todas as exceções de validação que forem logados. False ignora.
| |
| |-
| |
| |br.com.biserp.biscore.bislogger.autodebugger.exceptions
| |
| |True para enviar para o BISServer todas as exceções (exceto de validações) que forem logados. False ignora.
| |
| |-
| |
| |br.com.biserp.biscore.bislogger.autodebugger.vos
| |
| |True para enviar para o BISServer todos os VOs que forem logados. False ignora.
| |
| |}
| |
| </center>
| |
|
| |
|
| {{nota|Configurações Auto-Debugger|Se o Auto-Debugger estiver configurado para enviar apenas mensagens do tipo exception, significa que ele enviará apenas Logs em que tenham ocorrido registro de exceptions, porém o Log completo será enviado, com o registro dos debugs, infos, warns, e tudo mais. Não apenas a informação definida para enviar.
| | = Manutenção = |
| Em outras palavras, as configurações do auto-debugger indicam quais mensagens devem aparecer no log para que ele seja importante o suficiente a ponto de ser enviado para o BISServer.}}
| | |
| | Para que os registros não fiquem esquecidos "para sempre" na base de dados só acumulando dados, o BIS tem implementada a tarefa '''BISLoggerMaintenanceTask''', que é executada periodicamente e limpa os registros mais antigos que uma determinada data. |
| | |
| | As datas de validade de cada tipo de registro de log podem ser definidos nas configurações (propriedades) do sistema. |
O BISLogger é a implementação do RFWLogger utilizada no BIS10.
Para mais informações leia a documentação do RFWLogger.
Utilização para Log
Por ser uma implementação baseada no RFWLogger, a utilização segue as as diretriz do RFWLogger e utiliza os métodos da própria classe do RFWLogger para registrar os eventos.
Funcionamento
No BIS10, o RFWLogger, implementado através do BISLogger, tem o objetivo de transformar todos os registros de log em entradas no banco de dados. Com isso esperamos ganhar na agilidade de filtrar e criar relatórios específicos sobre os acontecimentos do sistema.
Todos os logs realizados pelo RFWLogger são redirecionados através da implementação BISRFWLoggerImplementation para dentro do BISLogger. Já convertendo as entradas de log no objeto BISLoggerVO que é persistido no banco de dados.
O BISLogger armazena essas entradas temporariamente em memória, e a cada X tempo envia todos os objetos para serem persistidos no banco, livrando a memória. Essa operação é realizada por uma Thread que fica dentro do próprio BISLogger, e pode ser inicializada de duas maneiras:
- Ao registrar o primeiro objeto de log dentro da classe; ou,
- Diretamente pelo método startPersistThread().
A thread não é do tipo Daemond, ou seja, não permitirá que o sistema se desligue enquanto ela estiver rodando. Este efeito é intencional, para obrigar o desenvolvedor a tratar o encerramento do registro de Logs sem que sejam interrompidos no meio.
A thread termina utilizando o sistema de shutdown do RFW, ou seja, quando o método RFW.shutdownFW() for chamado. Ainda assim, após o encerramento de todo o sistema, alguns que também possam depender da mesma flag para se desligarem, é recomendado a chamada do método BISLogger.persistEntries() para garantir que não sobraram entradas pendentes.
Manutenção
Para que os registros não fiquem esquecidos "para sempre" na base de dados só acumulando dados, o BIS tem implementada a tarefa BISLoggerMaintenanceTask, que é executada periodicamente e limpa os registros mais antigos que uma determinada data.
As datas de validade de cada tipo de registro de log podem ser definidos nas configurações (propriedades) do sistema.