Como utilizar todo o potencial do clientlog no Progress OpenEdge

Todo mundo que trabalha ou trabalhou com Progress já passou pela necessidade de encontrar algum problema ou saber exatamente o que ocorreu em determinado ponto do programa.


O debug fica ainda mais complicado quando não temos acesso ao código fonte. Para estes casos, o Progress possui o clientlog, um recurso muito conhecido e utilizado. Sempre que precisamos de bate e pronto de ativar o clientlog, uma colinha é sempre bem-vinda.


O objetivo deste post é deixar uma consulta rápida de como ativar o clientlog no Progress Openedge e passar diversas dicas sobre como utiliza-lo de uma maneira mais prática.

Como funciona


O clientlog pode ser ativado inserindo parâmetros na PF ou em tempo de execução através do LogManager. Ele sempre vai funcionar da mesma maneira, independente da forma que for habilitado, o que muda é a sintaxe utilizada em cada caso.


Você pode utilizar o log de diversas formas e para diferentes objetivos. Eu separei um exemplo que vai atender a maioria dos casos, mesmo assim para situações específicas, consulte a documentação oficial.

Progress clientlog via PF


Habilitar o log pela PF é simples, você precisa apenas inserir os seguintes parâmetros no seu arquivo de conexão:



Ativar


-debugalert
-clientlog c:\tmp\clientlog.txt -clearlog
-logginglevel 4
-logentrytypes 4GLMessages,4GLTrace,DB.Connects,DynObjects.DB,DynObjects.XML,DynObjects.Other,DynObjects.CLASS,DynObjects.UI,FileID,ProEvents.UI.CHAR,ProEvents.UI.COMMAND,ProEvents.Other,SAX

A principal vantagem de se utilizar via PF é que quando a conexão é iniciada, todas as atividades já são gravadas no log.


A desvantagem é que você precisara alterar o arquivo .PF ou criar um arquivo exclusivo para o clientlog. Atenção! Cuidado com o tamanho do log pois ele pode crescer muito rapidamente! Falarei sobre isto mais adiante.

Progress clientlog em tempo de execução via LogManager


O Progress possui um recurso chamado LogManager que fornece uma série de métodos para trabalhar com logs. Usar o LogManager é muito simples, você precisa apenas abrir o editor (_edit.p) e executar o seguinte código:


Ativar


SESSION:DEBUG-ALERT = YES.
LOG-MANAGER:LOGFILE-NAME = "c:\tmp\clientlog.txt".
LOG-MANAGER:LOGGING-LEVEL = 4.
LOG-MANAGER:LOG-ENTRY-TYPES = "4GLMessages,4GLTrace,DB.Connects,DynObjects.DB,DynObjects.XML,DynObjects.Other,DynObjects.CLASS,DynObjects.UI,FileID,ProEvents.UI.CHAR,ProEvents.UI.COMMAND,ProEvents.Other,SAX".



Desativar


SESSION:DEBUG-ALERT = NO.
LOG-MANAGER:CLOSE-LOG().

A principal vantagem é não precisar alterar nada no PF nem em qualquer outro arquivo de configuração. Você pode inclusive criar um programa que ativa ou desativa o clientlog. Outra grande vantagem é a facilidade em depurar apenas uma pequena parte da aplicação.