Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

LogMsg

Registra uma mensagem de log com as informações do sistema no formato SysLog (RFC 5424), e automaticamente insere informações como: data e hora da geração da mensagem, hostname e id da thread.

O Log é expedido para o servidor de log (LogServer) de forma assíncrona, não gerando contenção no servidor de aplicação, podendo ser usado como “trace” sem grande prejuízo para a execução.

 

Sintaxe

 

 

LogMsg( < cFunc >, < nFacility >, < nSeverity >, < nVersao >, < cMsgId >, < cStrData >, < oMsg1uMsg1 >, < oMsg2uMsg2 >, ... )

Parâmetros

 

 

Nome

Tipo

Descrição

Obrigatório

Referência

cFunc

Caracter

Nome da função/aplicação onde o log está sendo gerado

X

 

nFacility

Numérico

Chave de armazenamento do valor

X

 

nSeverity

Numérico

Valor a ser armazenado na chave

X

 

nVersao

Numérico

Número da versão

X

 

cMsgId

Caracter

Identificador da mensagem

X

 

cStrData

Caracter

Dados estruturados

X

 

oMsgNuMsgN

Qualquer tipo

Mensagem a ser logada

 

 

Retorno

 

 

Nome

Tipo

Descrição

 

 

 

Observações

 

 

Conteúdo dos campos:

Nome

Conteúdo simplificado

Exemplo1

Exemplo 2

cFunc

‘’ / de 1 até 48 caracteres printáveis

‘testLog’

‘’

nFacility

De 0 até 23

22

23

nSeverity

De 0 até 7

5

3

nVersao

De 1 até 999

123

32

cMsgId

‘’ / de 1 até 32 caracteres printáveis

‘’

‘MSG00048’

cStrData

‘’ / ‘[‘ ID NOME1=”valor1” NOME2=”valor2”]

‘’

‘[pagto soma=”543”]’

oMsgNuMsgN

Qualquer caracter

‘Mensagem de Log1’

‘Erro de cálculo da folha de pagamento’

  • Conteúdo simplificado: Para a descrição completa dos campos ver na RFC 5424, todavia para facilitar o uso dos campos: cFunc, sMsgId cMsgId e cStrData,caso não seja fornecido nenhum valor (‘’), o valor nulo (NILVALUE)(‘-’) será inserido.
  • caracteres printáveis: são letras, números, sinais e que não contém espaços ou tabulações. Na tabela ASCII são os caracteres compreendidos entre os valores 33( ! ) e 126( ~ ).
  • O A soma do tamanho de todos os campos da mensagem de log não devem ultrapassar 10000 bytes.

 

 

Para uma completa descrição de todos os campos segue a equivalência de cada campo da mensagem com os campos descritos no documento RCF 5424.

Nome

Equivalência na RFC 5424

6. Syslog Message Format

cFunc

APP-NAME

nFacility

PRIVAL à 6.2.1.  PRI à Facility

nSeverity

PRIVAL à 6.2.1.  PRI à Severity

nVersao

VERSION

cMsgId

MSGID

cStrData

STRUCTURED-DATA

oMsgNuMsgN

MSG-ANY

 

 

Documentos:

Documento

Referência
Revisão

RFC 5424

https://tools.ietf.org/html/rfc5424

 Março de 2009.

Tabela ASCII

http://www.asciitable.com/

 

 

 

 

 

Exemplo

 

 

#define // Facility
#define FAC_FRAME_     22#22
#define FAC_SEGMENTS_ 23

// Severity
#define SEV_EMG_ 0
#define SEV_ALERT_ 1
#define SEV_CRITICAL_ 2
#define SEV_ERROR_ 3
#define define SEV_WARN_      4
#define SEV_NOTICE_ 5
#define SEV_INFORM_ 6
#define SEV_DEBUG_ 7

User Function tlogmsg()

LogMsg("tmsglog",  'tlogmsg', FAC_FRAME_, SEV_WARNNOTICE_,   1, "", "", "Mensagem de alerta do Frame")

...

 

 

Definição dos Parâmetros de configuração

Protheus: Cliente de Logs

 

Parâmetros do “.ini”

 

 

Parâmetro

Descrição

Obrigatório

Valor Default

Sessão

[LogClient]

X

 

server

Nome da máquina onde está o servidor de logs

 

localhost

port

Porta do servidor de logs

X

0

maxLogSize

Tamanho máximo do buffer de mensagens de logs (bytes)

 

200 Mbytes

percentUsageLogToStartLocalServer

Porcentagem já usada do Buffer de log para tentar ativar, como contingência, um servidor de logs local

 

50

local_log_server_bin

Caminho completo do executável do servidor de logs local

 

../logserver/logserver

local_server

Nome da máquina local onde está o servidor de logs

 

localhost

local_port

Porta do servidor local de logs

 

0

 

Exemplo

 

 

[LogClient]

server=172.16.84.41

port=514

maxLogSize=8000000

percentUsageLogToStartLocalServer=70

local_log_server_bin=/protheus11/logserver/logserver

local_port=4002

local_server=127.0.0.1

 

...

 

 

 

LogServer: Servidor de Logs

 

Parâmetros do “.ini”

 

 

Parâmetro

Descrição

Obrigatório

Valor Default

Sessão

[LogServer]

X

 

port

Porta do servidor de logs

 

514

Type

Tipo do Log e do formato de gravação.

3164 -> Lê e grava somente no formato do Syslog RFC 3164.

5424 -> Grava no formato do Syslog RFC 5424 e lê RFC 5424 e 3164.

SysLog -> Grava no formato do Syslog recebido RFC 5424 ou 3164.

Readable -> Similar a "SysLog", porém grava em formato mais legível.

RawData -> Grava no formato que recebeu. (Dados brutos).

 

5424

file

Nome do arquivo de log

 

log_server.txt

file_size

Tamanho máximo do arquivo de log (bytes)

 

1 Mbyte

max_files

Número de arquivos de backup. (-1 equivale ao máximo de arquivos)

 

10

backup_dir

Nome do diretório onde deve armazenar os backups

 

‘’

flush

Forca a gravação do log a toda a escrita [ 0 ou 1] (fica muito lento)

 

0

truncate

Zera o conteúdo do arquivo na abertura [ 0 ou 1 ] (somente válido para arquivos pré existentes)

 

1

echo

Imprime na console os logs que estão sendo recebidos para gravação

 

0

proxy_server

Nome do servidor para onde reencaminhar as mensagens recebidas

 

‘’

proxy_port

Porta do servidor onde serão reencaminhadas as mensagens

 

0

proxy_buffer

Tamanaho do buffer de mensagens para armazenar as mensagens para reencaminhar (bytes)

 

10 Mbytes

 

Exemplo

 

 

[LogServer]

port=4002

type=3164

file=syslogmsg.log

file_size=10485760

max_files=100

backup_dir=backup_logs

flush=true

truncate=false

...

 

Obs. O LogServer só será disponibilizado como um executável separado da versão, e somente para as versões do TotvsTecNG ele passará a ser distribuido integrado a versão.

...

'', '', 'Mensagem do Frame 1')
LogMsg('tlogmsg', FAC_FRAME_, SEV_WARN_, 1, '', '', 'Mensagem do Frame 2')
LogMsg('tlogmsg', FAC_SEGMENTS_, SEV_INFORM_, 1, '', '', 'Mensagem do Segments 1')
LogMsg('tlogmsg', FAC_SEGMENTS_, SEV_INFORM_, 1, '', '', 'Mensagem do Segments 2')
LogMsg('tlogmsg', FAC_FRAME_, SEV_CRITICAL_, 1, '', '[frame msg="mensagem 3" nro="2"]', '')
LogMsg('tlogmsg', FAC_SEGMENTS_, SEV_ERROR_, 1, '', '[seg val="teste 1" nroid="4"]', '')

Return .T.

...

Obs. Para que as mensagens sejam enviados para o Servidor de Logs (Log Server) a "Sessão [LogClient]" deve ser definida no arquivo de configuração do servidor de aplicação.


Abrangência

TOTVS Application Server a partir do release 7.00131227P00131227A

 

Veja Também

Sessão [LogClient]

Log Server - Arquivo de configuração

Log Management

Conout