Á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. Tela XXX
      1. Outras Ações / Ações relacionadas
    2. Tela XXX
      1. Principais Campos e Parâmetros
    3. Tabelas utilizadas
      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, foi implementada 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
    Bloco de código
    languagexml
    titleserver.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 
    Bloco de código
    languagepowershell
    titlecatalina.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

    Image Added

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

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

    Bloco de código
    languagejava
    titleExemplo.java
    linenumberstrue
    ...
    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:

    Bloco de código
    titlecatalina.*.log
    FINEST [http-nio-8080-exec-4] com.totvs.framework.log.TOTVSLog.debug a491862e-c754-427e-a276-32a7ad155a0e|0|WEBSERVER|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 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.

    Bloco de código
    languagejava
    titleexemplo.p
    linenumberstrue
    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:

    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

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

    View file
    nametotvs-lib.zip
    height250

    View file
    namejavadoc-totvs-fwk-log.zip
    height250