Função que lê o log do IXBLOG e retorna somente a lista dos ExecBlock executados

Olá pessoal…

Hoje vou mostrar uma função que desenvolvi, que basicamente lê um arquivo de IXBLog (Logs de pontos de entrada e funções customizadas) e gera um arquivo apenas com a lista das funções.


Muitas vezes um arquivo de IXBLog pode ter várias linhas, e o programador pode acabar se perdendo em meio a tantas funções executadas. Dessa forma, essa rotina foi desenvolvida apenas para trazer a lista de ExecBlocks executados.

Abaixo um print do IXBLog original.

IXBLog original

IXBLog original

E abaixo um print do arquivo gerado por essa função customizada.

Lista de ExecBlocks executados

Lista de ExecBlocks executados

Abaixo o código fonte desenvolvido.

//Bibliotecas
#Include "Protheus.ch"

//Constantes
#Define STR_PULA   Chr(13)+Chr(10)

/*/{Protheus.doc} zLeIXBLog
Função que lê arquivo gerado pelo IXBLog, e gera um outro apenas com o nome dos pontos de entrada executado
@type function
@author Atilio
@since 05/08/2016
@version 1.0
	@param cArquivo, character, (Descrição do parâmetro)
	@example
	u_zLeIXBLog("E:\administrador_026270.log")
/*/

User Function zLeIXBLog(cArquivo)
	Local aArea   := GetArea()
	Local cPEs    := "ExecBlocks executados: "+STR_PULA
	Local oFile
	Local cTmpDir := GetTempPath()
	Local cTmpArq := "log_pe_"+dToS(dDataBase)+"_"+StrTran(Time(), ':', '')+".txt"
	
	//Definindo o arquivo a ser lido
	oFile := FWFileReader():New(cArquivo)
	
	//Se o arquivo pode ser aberto
	If (oFile:Open())
	
		//Se não for fim do arquivo
		If ! (oFile:EoF())
		
			//Enquanto houver linhas a serem lidas
			While (oFile:HasLine())
				cLinAtu := oFile:GetLine()
				
				//Se tiver contido o texto ExecBlock
				If "ExecBlock" $ cLinAtu
					cNomePonto := Alltrim(StrTran(cLinAtu, 'ExecBlock   :', ''))
					
					//Se ele não estiver contido, adiciona no texto
					If ! cNomePonto $ cPEs
						cPEs += "> "+cNomePonto+STR_PULA
					EndIf
				EndIf
			EndDo
		EndIf

		//Fecha o arquivo e finaliza o processamento
		oFile:Close()
	EndIf
	
	//Gera o arquivo e abre
	MemoWrite(cTmpDir+cTmpArq, cPEs)
	ShellExecute("OPEN", cTmpArq, "", cTmpDir, 0 )
	
	RestArea(aArea)
Return

Esses e outros códigos, estão disponíveis gratuitamente no nosso GitHub, acesse em github.com/dan-atilio/AdvPL.

Bom pessoal, por hoje é só.
Abraços e até a próxima.

About Dan_Atilio

Analista e desenvolvedor de sistemas na TOTVS Oeste Paulista Bauru. Técnico em Informática pelo CTI da Unesp. Graduado em Banco de Dados pela Fatec Bauru. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor do projeto Terminal de Informação, onde são postados tutoriais e notícias envolvendo o mundo da tecnologia.

Deixe uma resposta