Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Informações
titleInformação

A partir da release 12.1.2311, a biblioteca totvs-valve-<VERSAO>.jar é expedida com o produto, portanto basta configurar sua utilização conforme recomendações a seguir.

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 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. 

...

Para utilizar esta funcionalidade, é necessário efetuar algumas 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:

...

  • Inserir os arquivos .jar abaixo no diretório recém criado (anexo totvs-lib.zip que contem com os arquivos necessários.)
Bloco de código
titlelib/totvs-lib
commons-logging-1.2.jar
log4j-1.2.12.jar
totvs-fwk-log-<VERSAO>-NFRW-SNAPSHOT.jar
totvs-valve-2.0.jar
Aviso

APPSERVER

...

titleAviso

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

Image Added

  • 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.
Bloco de código
languagedelphi
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 que devem ser inseridas a classe utilitária TOTVSLogUtil  que deve ser inserida no código fonte de acordo com cada linguagem de programação.

...

Foi implementada a classe TOTVSLog TOTVSLogUtil, no qual foi realizada 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.

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

Bloco de código
languagexml
titlepom.xml
<dependency>
	<groupId>com.totvs.framework</groupId>
	<artifactId>totvs-fwk-log<util</artifactId>
	<version>${project.version}</version>
	<scope>provided</scope>
</dependency>

Principais métodos

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

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

Correspondente ao método 

warning

severe do Logger.

 

public void
info
warning(String cMsg)

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

Correspondente ao método 

info

warning do Logger. 

public void
error
info(String cMsg)

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

Correspondente ao método 

severe

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.

Bloco de código
languagejava
titleTrecho de código - JavaExemplo.java
linenumberstrue
TOTVSLog..threadLocalTotvsLog.get()
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:

...

Dica
titleJavadoc

É 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 arquivo index.html em um navegador de sua preferenciapreferê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. - Client

Bloco de código
languagejava
titleTrecho de código - Javaexemplo.p
linenumberstrue

Trecho de código - Exemplo Progress - AppServer

...

titleclientlog

asdasdasd

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. 

Bloco de código
titleclientlog
... 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.

Bloco de código
titleserver.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
Dica
titleTOTVSLogUtil.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:

clientlog
Bloco de código
languagejava
titlerequest_java.p
linenumberstrue
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).

...
Bloco de código
title

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
titleNota

Não é necessário reiniciar o navegador e / ou Tomcat para

...

efetivar as alterações.

Image Added

...


Informações
titleInformação

Com a utilização da funcionalidade de Rastreabilidade de Logs. todas , todas as mensagens que utilizarem o conceito descrito anteriormente serão 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.

...