Árvore de páginas


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.2209 implementamos 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:

  • Localizar a instalação do Tomcat e editar o arquivo ../conf/server.xml
  • Inserir a linha na área de definições do Valve
server.xml
<Host ...>
	...
	<Valve className="com.totvs.valve.TotvsLogValve" />
</Host>
  • Editar o arquivo ../conf/catalina.properties
  • Inserir o diretório ${catalina.home}/lib/totvs-lib/*.jar nas definições de common.loader. Inserir este mesmo diretório em server.loader e shared.loader caso exista algum diretório configurado 
catalina.properties
...
common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar","${catalina.home}/lib/totvs-lib/*.jar"
...
  • Criar o diretório totvs-lib em ../lib/totvs-lib

  • Inserir os arquivos .jar abaixo no diretório recém criado (anexo totvs-lib.zip com os arquivos necessários)
lib/totvs-lib
commons-logging-1.2.jar
totvs-fwk-log-<VERSAO>-NFRW-SNAPSHOT.jar
totvs-valve-2.0.jar

Aviso

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:

  • Localizar o broker que será utilizado no Progress OpenEdge Explorer
  • Entrar em Configurações, aba Agent e editar (ou criar) o arquivo .p indicado em Connect procedure

  • Inserir no arquivo *.p do Connect procedure (que no exemplo acima é o connect.p), como terceiro parâmetro de entrada o valor cAppServerInfo, para posteriormente setar o mesmo na variável global gAppServerInfo.
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 a classe utilitária TOTVSLogUtil  que deve ser inserida no código fonte de acordo com cada linguagem de programação.

JAVA

Foi implementada a classe TOTVSLogUtil, 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-util, sendo necessário a inclusão da dependência no arquivo pom.xml do projeto que será inserido o TOTVSLogUtil.

pom.xml
<dependency>
	<groupId>com.totvs.framework</groupId>
	<artifactId>totvs-fwk-util</artifactId>
	<version>${project.version}</version>
</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.

Exemplo.java
...
TOTVSLogUtil.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:

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

Javadoc

É 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 que se trata da implementação dos logs utilizados em TOTVSLogUtil. Após descompactar, abrir o arquivo index.html em um navegador de sua preferência. 

PROGRESS

Para a exibição da funcionalidade de Rastreabilidade de Logs para fontes Progress, foi implementada a classe TOTVSLogUtil, 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.

exemplo.p
USING com.totvs.framework.utp.*.

...  
TOTVSLogUtil:ERROR ("Teste - error"). 
TOTVSLogUtil:WARNING ("Teste - warning"). 
TOTVSLogUtil:INFO ("Teste - info"). 
TOTVSLogUtil: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. 

clientlog
... 4GL TOTVSLog [ERROR] f810b395-d37f-a598-8c14-31114c281f03|0|ClIENT|Teste - error
... 4GL TOTVSLog [WARNING] f810b395-d37f-a598-8c14-31114c281f03|1|ClIENT|Teste - warning
... 4GL TOTVSLog [INFO] f810b395-d37f-a598-8c14-31114c281f03|2|ClIENT|Teste - info
... 4GL TOTVSLog [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.

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

TOTVSLogUtil.cls

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

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

Envio de requisições Progress → Java

O método setTOTVSLogRequest deve ser utilizado em cada requisição REST (Progress) que possui como destino um endpoint em Java.

A seguir um exemplo de utilização deste método:

request_java.p
USING com.totvs.framework.utp.*.

...

	DEFINE VARIABLE oRequestBuilder AS RequestBuilder NO-UNDO.
	
	oRequestBuilder = RequestBuilder:POST(httpUrl, oJson)
                      	:AddHeader("Verify-User-Access-Type", "no")
                        :AddHeader("Hashed-Password", "yes")
                        :UsingBasicAuthentication(basicCredentials)
                        :WithData(oEntity, 'multipart/form-data').
                    
    TOTVSLogUtil:setTOTVSLogRequest(oRequestBuilder).

...

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.

Nota

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


Informação

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