01. VISÃO GERAL


Visando padronizar o processo de obtenção de Logs para identificação de problemas e fluxo de operações do Meu RH, foi implementado o RM Tracklog. 
O RM TRACKLOG é o motor de logs do RM responsável por disponibilizar informações sobre o sistema através de arquivos de texto contendo data e hora do evento e mensagens criadas de forma automática.
Portanto, com o TRACKLOG, os logs são capazes de mostrar o que, quando e onde aconteceu um evento, além de indicar quem deu início a ele.


02. ARQUIVO DE CONFIGURAÇÃO

O TRACKLOG é configurado através do arquivo JSON appsettings.log.json, para a solução do Meu RH, este arquivo deve estar localizado no nível raiz da pasta Bin, dentro da pasta FrameHTML. Caso o arquivo não seja encontrado, o sistema assume as configurações padrões
O conteúdo do arquivo de configuração é divido em algumas sessões, conforme detalhado no item 2.3.

Atualmente, por questões técnicas da engenharia do RM, o RMSTracklog está disponível para utilização no Meu RH, somente para registros de log em servidor Seq *


*Seq é um servidor de pesquisa e análise em tempo real para dados de log de aplicativos estruturados.

2.1 NÍVEIS (LEVEL) DE LOG

6/6

Ordem

Nível (Level)

Identificado no arquivo

Uso

5Fatal[FTL]O nível mais crítico, os eventos fatais exigem atenção imediata.
4Error[ERR]Quando a funcionalidade não está disponível ou as expectativas são quebradas, um evento de Erro é usado.
3Warning[WRN]Quando o serviço está degradado, em perigo ou pode estar se comportando fora de seus parâmetros esperados,
os eventos de nível de aviso são usados.
2Information[INF]Os eventos de informação descrevem coisas que acontecem no sistema que correspondem às suas responsabilidades e funções. 
Geralmente estas são as ações observáveis ​​que o sistema pode realizar.
1Debug[DBG]Debug é usado para eventos internos do sistema que não são necessariamente observáveis ​​de fora, mas são úteis para determinar como algo aconteceu.
0Verbose[VRB]Verbose é o nível mais ruidoso, raramente (ou nunca) habilitado para um aplicativo de produção.


2.2 SESSÕES DO ARQUIVO DE CONFIGURAÇÃO



Sessão Principal

Subsesões 

Pode ser alterado?
Serilog


UsingNãoRecursos usados pelo Serilog 
EnrichNãoInformações usadas para enriquecer os dados do log.
MinimumLevelSimNível mínimo que deve ser registrado.
0-Verbose, 1-Debug, 2 - Information, 3-Warning, 4-Error, 5-Fatal
FilterSimUsa expressão para filtrar eventos que passam pelo pipeline Serilog - Opções de Name: ByExcluding ou ByIncludingOnly
WriteToSomente os argumentos na subseção Args da MapToFileDefine como e onde o log deve ser escrito e salvo.


"WriteTo": [
      {
        "Name": "Seq",
        "Args": {

Propriedade

Descrição

serverUrlDefine a url do servidor Seq.

2.3 INFORMAÇÕES CONTIDAS NO ARQUIVO DE LOG

O arquivo de log é escrito conforme um template padrão (outputTemplate):


{SourceContext}{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} {Legacy} [{Level:u3}] {Message:lj} ({EnvironmentName}|{EnvironmentUserName}) <{ThreadId}:{ThreadName}>[{ProcessId}:{ProcessName}] [{CallerFilePath} - ({CallerLineNumber}) - {CallerMemberName}] [{Module}, {Category}, {Funcionality}] {NewLine}{Exception}



Propriedades do templete

Exemplo de dados logado

Descrição

{SourceContext}RM.Lib.Monitoring.Tracklog.Test.LogUnitTest

Contexto onde o log se encontra. Geralmente o namespace da classe que está usando o TrackLog.

{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} 2022-08-30 17:44:44.870 -03:00Data e hora do evento.
{Legacy} [LGC]Registros do sistema antigo de log são identificado com a tag [LGC]
[{Level:u3}] [INF]Nível (level) do evento.
{Tenant}shared-environmentIdentifica o Tenant do evento. Esse item é acoplado à mensagem.
{Message:lj} Information log testMensagem do evento.
({EnvironmentName}|{EnvironmentUserName}) (Production|JV01\valdemar.junior)Nome do ambiente e do usuário.
<{ThreadId}:{ThreadName}><13:Host>ThreadId e ThreadName do evento.
[{ProcessId}:{ProcessName}] [36956:Host.exe]ProcessId e ProcessName do evento.
[{CallerFilePath} - ({CallerLineNumber}) - {CallerMemberName}] [Lib\RM.Lib.Monitoring.Tracklog.TesteUnitario\LogUnitTest.cs - (114) - Should_Write_Info_Log]Arquivo de onde foi registrado o evento de log com o número da linha e o método que o chamou.
[{Module}, {Category}, {Funcionality}] [RMLib, SmartClient, Configuracao]Módulo, categoria e funcionalidade do sistema onde o evento ocorreu.
{NewLine}{Exception}NullReferenceException: Write Error Log Exception ---> System.Exception: Should_Write_Error_LogWarning, Error e Fatal é registrado e uma nova linha com a exceção

03. INSTALAÇÃO DE SERVIDOR SEQ

As informações referente a instalação e configuração de servidor Seq estão disponíveis no site do fabricante, conforme link https://docs.datalust.co/docs/an-overview-of-seq;


03.1 EM SERVIDORES WINDOWS

Efetuar download do instalador (arquivo .msi) e executá-lo, conforme link: https://datalust.co/download;

Após a instalação, atentar-se para o endereço do servidor, informado na etapa de configuração: 



Além disso, armazenar as informações de usuário e senha administradores do servidor, inseridos na segunda etapa.

Para mais informações, consultar documentação do fabricante: https://docs.datalust.co/docs/getting-started.

03.2 EM SERVIDORES LINUX

Efetuar download do instalador (datalust/seq - Docker) e executá-lo, conforme link: https://datalust.co/download;

Para mais informações, consultar documentação do fabricante: https://docs.datalust.co/docs/getting-started-with-docker.



04. HABILITANDO TRACKLOG NO MEU RH

Executar os passos abaixo para que seja iniciada a gravação dos arquivos de log do Meu RH no servidor de Seq configurado.


04.1 INCLUIR ARQUIVO DE CONFIGURAÇÃO NA PASTA FRAMEHTML

Efetuar download do arquivo de configuração JSON padrão e colar dentro da pasta de instalação FrameHTML.



Após colar o arquivo de configuração será necessário alterar o endereço do servidor Seq, contido na propriedade "serverUrl" para registro dos logs. 



Poderá ser incluído também filtros e alterado o nível de log a ser registrado.


04.2 INCLUIR TAG NO ARQUIVO WEB.CONFIG DA FRAMEHTML

Localizar o arquivo web.config, contido dentro da pasta FrameHTML e incluir a tag abaixo: 


05. HABILITANDO TRACKLOG NO RM PARA LOG COMPLETO


05.1 INCLUIR TAG NO ARQUIVO DO HOST

Localizar o arquivo RM.Host.exe.config, RM.Host.Service.exe.config e RM.Host.JobRunner.exe.config.

Para cada arquivo será necessário incluir a tag abaixo: 


05.2 INCLUIR ARQUIVO DE CONFIGURAÇÃO NA PASTA RAIZ

Efetuar download do arquivo de configuração JSON padrão (appsettings.log.json) e colar dentro da pasta, no diretório raiz do sistema RM.



Para os logs do RM, além da gravação no servidor Seq, já está disponível a gravação em arquivo em diretório configurado, diferentemente do Meu RH.



Para armazenamento em arquivo no diretório, favor consultar documentação : .


06. UTILIZAÇÃO DO SERVIDOR SEQ


Realizada a instalação do Servidor Seq, incluídos os arquivos de configuração do log e alterados os arquivos para inclusão da tag de gravação de log e reinício dos serviços do Host e IIS, abrir no navegador com a URL configurada na instalação do servidor Seq.

Ao acessar o endereço, poderá ser solicitado o usuário e senha informados na instalação:


Ao pressionar o ícone de Play, serão listados os logs gravados no período informado. 


06.1 APLICAÇÃO DE FILTROS PARA ACOMPANHAMENTO

No servidor Seq é possível aplicar filtros para facilitar o acompanhamento dos logs que estão sendo gravados.

Além dos filtros por Nível (Level), como Warning e Errors, é possível filtrar por Logs de um Módulo, Categoria e Funcionalidade.

Para isto, no campo de busca, ao ládo do botão de Play, basta informar os campos que deseja filtrar:








06.2 CATEGORIAS E FUNCIONALIDADES DISPONÍVEIS PARA CONSULTA DE LOG NO MEU RH:

A gravação de logs utilizando RM Tracklog está sendo implementada de forma progressiva para as funcionalidades. Abaixo é possível identificar quais categorias e funcionalidades já podem ter seu log capturado e analisado:


06.2.1 CATEGORIAS:

Abaixo estão listatadas as categorias e funcionalidades. Para cada funcionalidade estão listadas as rotas que irão ter seu log gravado, baseado na funcionalidade.













OBS.: Quando o ambiente do cliente estiver configurado para usar token, além das categorias respectivas é importante adicionar a categoria Api e a funcionalidade Token. Isso acontece, pois quando é utilizado token, o sistema realiza um redirecionamento. Para obter os logs desse redirecionamento deverá ser observado os logs da categoria Api e a funcionalidade Token.