Como substituir o ConOut pelo FWLogMsg

Hoje vou mostrar uma função desenvolvida, para substituir o clássico ConOut para passar pelas validações do Code Analysis.

Se você já precisou colocar os fontes em validação no Code Analysis, sabe que o ConOut é acusado para que seja melhorado a estrutura dos fontes.

A TOTVS criou a função FWLogMsg, porém essa função recebe vários parâmetros, então não daria simplesmente para dar um Ctrl+F no projeto e substituir o texto ConOut.

Pensando nisso, encapsulei a função FWLogMsg dentro de uma função de usuário chamada zConOut. Portanto, basta você procurar no projeto por ConOut e substituir por u_zConOut.

Abaixo o código fonte desenvolvido:

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} User Function zConOut
Função para substituir o ConOut (por causa do Code Analysis)
@type  Function
@author Atilio
@since 24/06/2021
@version version
@param cTexto, Caractere, Texto a ser exibido no console.log
@example
    u_zConOut("Teste")
@obs Para ativar esse recurso, a chave FWLogMsg_Debug tem que estar como 1 no AppServer.ini:
    https://centraldeatendimento.totvs.com/hc/pt-br/articles/360041301114-MP-ADVPL-Como-Ativar-a-fun%C3%A7%C3%A3o-FWLogMsg-
@see https://tdn.totvs.com/display/framework/FWLogMsg
/*/

User Function zConOut(cTexto)
    Local aArea    := GetArea()
	Default cTexto := ""
	
    FWLogMsg(;
		"INFO",;    //cSeverity      - Informe a severidade da mensagem de log. As opções possíveis são: INFO, WARN, ERROR, FATAL, DEBUG
		,;          //cTransactionId - Informe o Id de identificação da transação para operações correlatas. Informe "LAST" para o sistema assumir o mesmo id anterior
		"ZCONOUT",; //cGroup         - Informe o Id do agrupador de mensagem de Log
		,;          //cCategory      - Informe o Id da categoria da mensagem
		,;          //cStep          - Informe o Id do passo da mensagem
		,;          //cMsgId         - Informe o Id do código da mensagem
		cTexto,;    //cMessage       - Informe a mensagem de log. Limitada à 10K
		,;          //nMensure       - Informe a uma unidade de medida da mensagem
		,;          //nElapseTime    - Informe o tempo decorrido da transação
		;           //aMessage       - Informe a mensagem de log em formato de Array - Ex: { {"Chave" ,"Valor"} }
	) 
	
	RestArea(aArea)
Return

Obs.: Para o correto funcionamento, você deve ativar FWLOGMSG_DEBUG no appserver.ini, conforme documentação do TDN – Como Ativar a função FWLogMsg.

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

5 Responses

  1. Lucas disse:

    Informe a mensagem de log. Limitada à 10K – Como assim limitado a 10k ?

  2. Edson Novaes disse:

    Ola Atilio tudo joia?

    olha desculpa não conseguir compreender a forma de adicionar isso no console.
    trouxe um exemplo de como está meu fonte.

    Else
    ConOut(cMsg + cSeparador)
    EndIf

  3. Edson Novaes disse:

    Obrigado vou compilar.

Deixe uma resposta para Dan Atilio (Daniel Atilio)Cancelar resposta

Terminal de Informação