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

...

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

...

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

...

Para a apresentação das informações nos arquivos de log, foram disponibilizados duas classes utilitárias (TOTVSLog e dtsLog) 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 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

...

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
titleExemplo.java
linenumberstrue
...
TOTVSLog.threadLocalTotvsLog.get().TOTVSLogUtil.debug("RASTREABILIDADE LOGS - TESTE!");
...

...

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 dtsLog TOTVSLogUtil, no qual utiliza recursos do LOG-MANAGER em sua construção.

...

Bloco de código
languagejava
titleexemplo.p
linenumberstrue
USING com.totvs.framework.utp.*.

...  

dtsLogTOTVSLogUtil:ERROR ("Teste - error"). 
dtsLogTOTVSLogUtil:WARNING ("Teste - warning"). 
dtsLogTOTVSLogUtil:INFO ("Teste - info"). 
dtsLogTOTVSLogUtil: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 LOGDTSTOTVSLog [ERROR] f810b395-d37f-a598-8c14-31114c281f03|0|ClIENT|Teste - error
... 4GL LOGDTSTOTVSLog [WARNING] f810b395-d37f-a598-8c14-31114c281f03|1|ClIENT|Teste - warning
... 4GL LOGDTSTOTVSLog [INFO] f810b395-d37f-a598-8c14-31114c281f03|2|ClIENT|Teste - info
... 4GL LOGDTSTOTVSLog [DEBUG] f810b395-d37f-a598-8c14-31114c281f03|3|ClIENT|Teste - debug

...

Bloco de código
titleserver.log
... AS LOGDTSTOTVSLog [ERROR] 88f2301d-73f1-4b60-849d-cbb350c8399c|2|APPSERVER|Teste - error
... AS LOGDTSTOTVSLog [WARNING] 88f2301d-73f1-4b60-849d-cbb350c8399c|3|APPSERVER|Teste - warning
... AS LOGDTSTOTVSLog [INFO] 88f2301d-73f1-4b60-849d-cbb350c8399c|4|APPSERVER|Teste - info
Dica
titledtsLogTOTVSLogUtil.cls

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

Consulte a classe com/totvs/framework/utp/dtsLogTOTVSLogUtil.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:

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

...

TELA - PROPRIEDADES GERAIS

...

Informações
titleInformação

Com a utilização da funcionalidade de Rastreabilidade de Logs. todas , 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.

...