Função: FWLogMsg
Compatível Países: | Todos |
Sistemas Operacionais: | Todos |
Compatível às Bases de Dados: | Todos |
Nível de Acesso: | Nível 1 (Acesso Clientes) |
Idiomas: | Português, Inglês, Espanhol |
Versão | V12 |
Sintaxe
FWLogMsg( < cSeverity >, [ cTransactionId ] , < cGroup > , [ cCategory ] , [ cStep ] , [ cMsgId ] , [ cMessage ] , [ nMensure ] , [ nElapseTime ] , [ aMessage ] )
Descrição
Registra uma mensagem de log com as informações do sistema, conforme padrão SysLog - RFC-5424
Parâmetros
Nome | Tipo | Descrição | Default | Obrigatório |
cSeverity | Caracteres | Informe a severidade da mensagem de log. As opções possíveis são: INFO,WARN,ERROR,FATAL,DEBUG | X | |
cTransactionId | Caracteres | Informe o Id de identificação da transação para operações correlatas. Informe "LAST" para o sistema assumir o mesmo id anterior | FWUUIDV1() | |
cGroup | Caracteres | Informe o Id do agrupador de mensagem de Log | X | |
cCategory | Caracteres | Informe o Id da categoria da mensagem | "" | |
cStep | Caracteres | Informe o Id do passo da mensagem | "" | |
cMsgId | Caracteres | Informe o Id do código da mensagem | "" | |
cMessage | Caracteres | Informe a mensagem de log. Limitada à 10K | "" | |
nMensure | Numérico | Informe a uma unidade de medida da mensagem | 0 | |
nElapseTime | Numérico | Informe o tempo decorrido da transação | 0 | |
aMessage | Array | Informe a mensagem de log em formato de Array - Ex: { {"Chave" ,"Valor"} } | {} |
Exemplo
FWLogMsg
#include "protheus.ch" //------------------------------------------------------------------- /*/{Protheus.doc} myLogMsg Exemplo de utilização da função FWLogMsg @author Daniel Mendes @since 16/03/2021 @version 1.0 /*/ //------------------------------------------------------------------- user function myLogMsg() local nBegin as numeric local aMessage as array local nQtdMsg as numeric local nI as numeric local cMsg as char //Mensagem simples, de forma reduzida, somente parâmetros obrigatórios FWLogMsg("INFO", /*cTransactionId*/, "MeuGrupo", /*cCategory*/, /*cStep*/, /*cMsgId*/, "Minha primeira mensagem", /*nMensure*/, /*nElapseTime*/, /*aMessage*/) //Começo das mensagens nBegin := Seconds() nQtdMsg := 12 //Número máximo de mensagens cMsg := "Mensagem que não será apresentada caso a função FWLogMsg seja direcionada com console (ConOut)" for nI := 1 to 12 step 2 //Mensagem simples, informando todos os parâmetros FWLogMsg("INFO", "LAST", "MeuGrupo", "MinhaCategoria", cValToChar(nI) , "MeuID", "Meu registro de sistema", nQtdMsg, Seconds() - nBegin) aMessage := {} //Informações adicionais aAdd(aMessage, {"Date", Date()}) aAdd(aMessage, {"Hour", Time()}) if getRemoteType() != NO_REMOTE aAdd(aMessage, {"Computer", GetClientIP()}) aAdd(aMessage, {"IP", GetClientIP()}) endif //Quando enviado o parâmetro de aMessage, o parâmetro cMessage não é exibido no console FWLogMsg("INFO", "LAST", "MeuGrupo", "MinhaCategoria", cValToChar(nI +1) , "MeuID", cMsg, nQtdMsg, Seconds() - nBegin, aMessage) aSize(aMessage, 0) next return
Atenção
Quando o parâmetro aMessage é enviado e a função FWLogMsg está exibindo as informações no console via ConOut, o parâmetro cMessage é omitido do console, esse comportamento foi adotado para evitar a sobrecarga de informações no console.log.
Observações
Esta API refere-se a padronização da linha Microsiga Protheus sobre a implementação da API LogMsg da Virtual Machine.
1) O Id do agrupador da mensagem é um código padronizado entre todas as linhas de produto TOTVS e visa identificar um agrupamento de mensagem relacionadas
2) O Id da categoria da mensagem é uma sub-divisão do Id do agrupador da mensagem e é padronizado entre todas as linhas de produto TOTVS.
3) O Id do passo da mensagem, indica uma etapa de avança de terminada transação que é monitorada. Pode ser ou não padronizada nas linhas de produto.
4) O Id do código do mensagem é padronizado dentro da linha TOTVS
5) A mensagem de log é livre, mas deve ser clara e simples
6) A unidade de medida da mensagem é padronizada entre as linhas de produto TOTVS e visa fornecer um balanço de comparativo de tempo
7) O tempo decorrido visa fornecer um parâmetro de desempenho do sistema em determinadas operações. Em alguns casos é padronizado.
1) O Id do agrupador da mensagem é um código padronizado entre todas as linhas de produto TOTVS e visa identificar um agrupamento de mensagem relacionadas
2) O Id da categoria da mensagem é uma sub-divisão do Id do agrupador da mensagem e é padronizado entre todas as linhas de produto TOTVS.
3) O Id do passo da mensagem, indica uma etapa de avança de terminada transação que é monitorada. Pode ser ou não padronizada nas linhas de produto.
4) O Id do código do mensagem é padronizado dentro da linha TOTVS
5) A mensagem de log é livre, mas deve ser clara e simples
6) A unidade de medida da mensagem é padronizada entre as linhas de produto TOTVS e visa fornecer um balanço de comparativo de tempo
7) O tempo decorrido visa fornecer um parâmetro de desempenho do sistema em determinadas operações. Em alguns casos é padronizado.
Códigos padronizados para a equipe de Segmentos do Microsiga Protheus:
ID | Valor |
Agrupador | "BusinessObject" |
Categoria | Rotina de menu (Exemplo: "MATA010") |
O log de Debug somente é ativado pela chave no environment FWLOGMSG_DEBUG=1
** Quando o LogServer não esta ativo é escrito no ConsoleLog do AppServer a seguinte estrutura de mensagem:
[Id do Produto][Data e Hora][Severidade][Id da Mensagem][sStrData no padrão SysLog][texto da mensagem]
Veja também
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas
3 Comentários
Marcelo Araujo Dente
Bom dia, teria como disponibilizar mais exemplos de uso?
Guilherme Bigois
Segue:
Moises Osti
Bem mais interessante do que a função Conout(), porém não consegui simular diferença no Log adicionando ou não o parâmetro nElapseTime. tem algum exemplo de diferenciação?
Outra dúvida é em relação ao parâmetro nMensure quais são as opções possíveis?