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

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.

2 Responses

  1. Claudio Donizete disse:

    Boa tarde Dan_Atilio

    Você teria algo que lê o logprofiler?

    Obrigado.

Deixe uma resposta para Dan_AtilioCancelar resposta

Terminal de Informação