CONTEÚDO

  1. Visão Geral
  2. Configuração
    1. Tomcat
    2. AppServer
  3. Exemplo de utilização
    1. JAVA
    2. Progress
  4. Anexos

01. VISÃO GERAL

Devido as diversas arquiteturas (Java, Client Progress, AppServer) utilizadas no produto TOTVS - Linha Datasul, a análise de uma inconsistência na execução de rotinas é difícil e improdutiva, ocasionando um atendimento ao cliente moroso e manutenções complicadas em analisar sua causa raiz.

Com o objetivo de sanar estas dificuldades, a partir da release 12.1.34 foi implementada a Rastreabilidade de Logs para facilitar a identificação de fluxos de execução entre as camadas (com a leitura dos arquivos de log) e permitir a centralização de análises dos mesmos, cujo o intuito é aumentar produtividade das análises para todas as equipes. 

02. CONFIGURAÇÃO

Para utilizar esta funcionalidade, é necessário efetuar as seguintes configurações no ambiente:

TOMCAT

Com o intuito de centralizar a origem da geração do log, foi evoluída a funcionalidade do TOTVS Valve para considerar a Rastreabilidade de Logs, sendo necessário efetuar parametrizações no Tomcat.

A seguir será descrito um passo a passo para a configuração:

<Host ...>
	...
	<Valve className="com.totvs.valve.TotvsLogValve" />
</Host>
...
common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar","${catalina.home}/lib/totvs-lib/*.jar"
...

commons-logging-1.2.jar
log4j-1.2.12.jar
totvs-fwk-log-<VERSAO>-NFRW-SNAPSHOT.jar
totvs-valve-2.0.jar

Caso o servidor de aplicação Tomcat possuir um totvs-valve-1.0.jar em ../lib, é necessário remove-lo, pois a nova versão 2.0 também contempla o controle de requisições CORS.

APPSERVER

Para garantir a unicidade do UID entre as camadas Java e Progress, é necessário parametrizar as configurações do broker que será utilizado nas conexões. A seguir será descrito um passo a passo:

DEFINE INPUT PARAMETER cParam1 		  AS CHARACTER NO-UNDO.
DEFINE INPUT PARAMETER cParam2 		  AS CHARACTER NO-UNDO.
DEFINE INPUT PARAMETER cAppServerInfo AS CHARACTER NO-UNDO.

DEFINE NEW GLOBAL SHARED VARIABLE gAppServerInfo AS CHARACTER NO-UNDO.

IF cAppServerInfo <> "" OR cAppServerInfo <> ? THEN
	ASSIGN gAppServerInfo = cAppServerInfo.

03. EXEMPLO DE UTILIZAÇÃO

Para a apresentação das informações nos arquivos de log, foram disponibilizados duas classes utilitárias (TOTVSLog e dtsLog) que devem ser inseridas no código fonte de acordo com cada linguagem de programação.

JAVA

Foi implementada a classe TOTVSLog, no qual utiliza uma especialização da classe java.util.logging.Logger (https://docs.oracle.com/javase/8/docs/api/java/util/logging/Logger.html), já existentes no produto TOTVS - Linha Datasul.

Esta classe está disponível no artefato totvs-fwk-log, sendo necessário a inclusão da dependência no arquivo pom.xml do projeto que será inserido o TOTVSLog.

<dependency>
	<groupId>com.totvs.framework</groupId>
	<artifactId>totvs-fwk-log</artifactId>
	<version>${project.version}</version>
	<scope>provided</scope>
</dependency>

Principais métodos

MétodoDescrição
public void error(String cMsg)

Exibe no arquivo de log o valor de cMsg na estrutura para o rastreamento

Correspondente ao método severe do Logger.

public void warning(String cMsg)

Exibe no arquivo de log o valor de cMsg na estrutura para o rastreamento

Correspondente ao método warning do Logger. 

public void info(String cMsg)

Exibe no arquivo de log o valor de cMsg na estrutura para o rastreamento

Correspondente ao método info do Logger.

public void debug(String cMsg)

Exibe no arquivo de log o valor de cMsg na estrutura para o rastreamento

Correspondente ao método finest do Logger.

Trecho de código - Exemplo Java

O exemplo a seguir utiliza o método debug para a exibição da mensagem de log, onde os valores complementares (UID, SEQUENCIA e ORIGEM) são preenchidos automaticamente de acordo com a requisição.

Para evitar problemas de concorrência das Threads e perda da rastreabilidade por UID, o acesso a classe TOTVSLog deve ser realizado com a utilização de ThreadLocal. Resgate o objeto com o comando TOTVSLog.threadLocalTotvsLog.get() e utilize seus respectivos métodos.

...
TOTVSLog.threadLocalTotvsLog.get().debug("RASTREABILIDADE LOGS - TESTE!");
...


Caso o arquivo logging.properties esteja corretamente parametrizado para a exibição do nível FINEST, é apresentada a informação abaixo no arquivo catalina.*.log:

FINEST [http-nio-8080-exec-4] com.totvs.framework.log.TOTVSLog.debug a491862e-c754-427e-a276-32a7ad155a0e|0|WEBSERVER|RASTREABILIDADE LOGS - TESTE!

É possível informar manualmente os valores UID, SEQUENCIA e ORIGEM de acordo com a sua necessidade.

Consultar o anexo javadoc-totvs-log.zip para mais informações dos métodos e atributos existentes na classe TOTVSLog. Após descompactar, abrir o arquivo index.html em um navegador de sua preferencia. 

PROGRESS

Para a exibição da funcionalidade de Rastreabilidade de Logs para fontes Progress, foi implementada a classe dtsLog, no qual utiliza recursos do LOG-MANAGER em sua construção.

Principais métodos

MétodoDescrição

METHOD STATIC VOID ERROR (cLog AS CHARACTER)


Exibe no arquivo de log o valor de cLog na estrutura para o rastreamento

Correspondente ao nível 1 para a exibição do nível configurado.

METHOD STATIC VOID WARNING (cLog AS CHARACTER)

Exibe no arquivo de log o valor de cLog na estrutura para o rastreamento

Correspondente ao nível 2 para a exibição do nível configurado.

METHOD STATIC VOID INFO (cLog AS CHARACTER)

Exibe no arquivo de log o valor de cLog na estrutura para o rastreamento

Correspondente ao nível 3 para a exibição do nível configurado.

METHOD STATIC VOID DEBUG (cLog AS CHARACTER)

Exibe no arquivo de log o valor de cLog na estrutura para o rastreamento

Correspondente ao nível 4 para a exibição do nível configurado.

Trecho de código - Exemplo Progress

O exemplo a seguir demonstra a utilização dos principais métodos para a exibição da mensagem nos arquivo de log, onde os valores complementares (UID, SEQUENCIA e ORIGEM) são preenchidos automaticamente.

USING com.totvs.framework.utp.*.

...

dtsLog:ERROR ("Teste - error").
dtsLog:WARNING ("Teste - warning").
dtsLog:INFO ("Teste - info").
dtsLog:DEBUG ("Teste - debug").

...


Caso o nível de log do CLIENT Progress esteja adequado para a exibição, será apresentada a mensagem abaixo com suas devidas formatações. 

... 4GL LOGDTS [ERROR] f810b395-d37f-a598-8c14-31114c281f03|0|ClIENT|Teste - error
... 4GL LOGDTS [WARNING] f810b395-d37f-a598-8c14-31114c281f03|1|ClIENT|Teste - warning
... 4GL LOGDTS [INFO] f810b395-d37f-a598-8c14-31114c281f03|2|ClIENT|Teste - info
... 4GL LOGDTS [DEBUG] f810b395-d37f-a598-8c14-31114c281f03|3|ClIENT|Teste - debug


Se o exemplo apresentado anteriormente for executado no AppServer, a origem é automaticamente identificada e exibida no arquivo .server.log, onde o nível de log configurado também é considerado para a mensagem.

... AS LOGDTS [ERROR] 88f2301d-73f1-4b60-849d-cbb350c8399c|2|APPSERVER|Teste - error
... AS LOGDTS [WARNING] 88f2301d-73f1-4b60-849d-cbb350c8399c|3|APPSERVER|Teste - warning
... AS LOGDTS [INFO] 88f2301d-73f1-4b60-849d-cbb350c8399c|4|APPSERVER|Teste - info

É possível informar manualmente os valores UID, SEQUENCIA e ORIGEM de acordo com a sua necessidade.

Consulte a classe com/totvs/framework/utp/dtsLog.cls para mais informações dos métodos e atributos existentes.

TELA - PROPRIEDADES GERAIS

Para habilitar / desabilitar a exibição das mensagens de log (que utilizam a Rastreabilidade de Logs) em todas as camadas do produto, foi disponibilizada um chaveamento em Propriedades Gerais.

Não é necessário reiniciar o navegador e / ou Tomcat para efetivar as alterações.


Com a utilização da funcionalidade de Rastreabilidade de Logs, todas as mensagens que utilizarem o conceito descrito anteriormente são apresentadas com a seguinte estrutura:

<UID>|<SEQUENCIA|<ORIGEM>|<MENSAGEM>

  • Como o UID é único, mesmo que a execução seja trafegada entre as camadas Java → AppServer, facilitará o rastreamento e a análise da execução de uma funcionalidade;
  • A sequencia é incrementada automaticamente a cada exibição da mensagem de log, com isso facilitará a análise da hierarquia de execução.

04. ANEXOS