Manipular e mostrar logs com as funções AutoGrLog e GetAutoGrLog – Maratona AdvPL e TL++ 053

Nesse vídeo será demonstrado em como manipular e buscar os logs (usados por exemplo na MostraErro) através das funções AutoGrLog e GetAutoGrLog.

Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} User Function zExe053
Exemplo de função para montar o "MostraErro" e para buscar a mensagem
@type Function
@author Atilio
@since 05/12/2022
@see https://tdn.totvs.com/pages/releaseview.action?pageId=6815089 e https://tdn.totvs.com/pages/releaseview.action?pageId=6815090
@obs 
    Função AutoGrLog 
    Parâmetros
        + cText      , Caractere  , Texto que será gravado dentro do log do MostraErro

    Função GetAutoGRLog
    Retorno
        + aRet       , Array      , Array com as linhas das mensagens do log do MostraErro
    Observação: só é possível usar se a variável lAutoErrNoFile estiver declarada como Private

    **** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao ****
/*/

User Function zExe053()
    Local aArea            := FWGetArea()
    Local aRespos          := {}
    Local nAtual           := 0
    Local cMsg             := ""
    Private lAutoErrNoFile := .F.

    //Exemplo 1
    //Montando a mensagem para exibir no MostraErro
    lAutoErrNoFile := .F.
    AutoGrLog("Houve uma falha - ID #01!")
    AutoGrLog("As tabelas não estavam posicionadas no momento do processamento da rotina.")
    AutoGrLog("Contate o administrador")
    MostraErro()

    //Exemplo 2
    //Agora monta uma mensagem, só que ao invés de exibir, será gravado em um array
    lAutoErrNoFile := .T.
    AutoGrLog("Houve uma falha - ID #02!")
    AutoGrLog("As tabelas não estavam posicionadas no momento do processamento da rotina.")
    AutoGrLog("Contate o administrador")
    aRespos := GetAutoGRLog()

    //Percorre todas as linhas do log e salva num arquivo txt
    For nAtual := 1 To Len(aRespos)
        cMsg += aRespos[nAtual] + CRLF
    Next
    MemoWrite("\x_logs\log_auto.txt", cMsg)

    FWRestArea(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.

Deixe uma resposta