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)
Especialista em Engenharia de Software pela FIB. Entusiasta de soluções Open Source. E blogueiro nas horas vagas.

2 Responses

  1. Lucas disse:

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

Deixe uma resposta