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 02.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 Serilog:
    A a sessão principal do arquivo de configuração é a "Serilog", onde é informado como o sistema deve escrever o arquivo de log e os recursos que serão utilizados: 


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.


  • Sessão que configura o envio do log para o sistema de monitoramento Seq

"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):


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 :  Framework - Linha RM- Frame - Habilitar o RM Tracklog.



Atenção


Esta funcionalidade está liberada somente a partir da versão 12.1.2402.160.





  • Sem rótulos