Este framework adiciona algumas classes de log no repositório de objetos que podem ser invocadas de dentro do seu programa TOTVS. Baseado no SLF4J, Logback e outros frameworks de mercado, este framework se destaca das funções padrões de Log da TOTVS por tratar níveis de log, formatos de exibição e estratégias de gravação.
Clone este repositório ou faça download e então compile todos os arquivos. Exemplo de uso:
User Function LogTest
Local oLogger
Local oCustomLogger
If !TCIsConnected()
If !RpcSetEnv(COMPANY_CODE, BRANCH_CODE,,,, ProcName())
ConOut("It was not possible to login in Protheus.")
Return
EndIf
EndIf
oLogger := Log():New()
oCustomLogger := Log():New("My custom log")
oLogger:All("This will be displayed always")
oLogger:Trace("This is a trace message")
oLogger:Debug("This is a debug message")
oLogger:Info("This is an info message")
oLogger:Warn("This is a warning message")
oLogger:Error("This is an error message")
oLogger:Fatal("This is a fatal message")
oCustomLogger:Info("User {} had a bad experience creating the product {}.", "João", "001")
oCustomLogger:Info("Bool {}, Integer {}, Char {}, Date {}", .T., 42, "Test", Date())
Return
O nível do log pode ser definido no parâmetro MV_LOGLEVE. Valores válidos são:
-
ALL
-
TRACE
-
DEBUG
-
INFO
-
WARN
-
ERROR
-
FATAL
Se o parâmetro não existir, o valor padrão será INFO.
Caso não passe o nome do log no construtor da classe então o sistema usa a função ProcName para identificar o nome da classe/função de origem.
Parâmetros podem ser passados para o log sem se preocupar com o tipo da variável:
oLogger:Info("My name is {} and I will be {} years old at {}.", "Josh", 42, dDatabase)
Output:
[20/09/2019][22:26:06.913] [INFO] My custom log name - My name is Josh and I will be 42 years old at 20/09/2019.
Você pode alterar o layout de saída criando um novo formatter com o layout da sua empresa ou do seu cliente. O parâmetro MV_LOGFORM controla
qual implementação de formatter usar, caso não exista, o formatter padrão será o DEFAULT
.
Um appender define como seu log será impresso. Neste repositório atualmente existem dois appenders: CONSOLE
e FILE
para impressão no console do AppServer e impressão em arquivo de texto respectivamente. O Appender ativo é controlado pelo parâmetro MV_LOGAPP, caso não exista o valor padrão será CONSOLE.
Para o FILE appender, o parâmetro MV_LOGPATH controla a pasta ondes os arquivos de logs são gerados. Caso não exista, os logs serão gerados na pasta Protheus_Data\logs.
Implemente novos appenders conforme sua necessidade.
Este projeto é livre. Use à vontade. Se encontrar algum bug reporte aqui no GitHub e se fizer alguma melhoria no código, contribua com um pull request 😊