FwLogger
Log estruturado em TLPP. Substitui ConOut/MemoWrite em codigo moderno. Suporta niveis (info/warn/error/debug) e contexto JSON.
Assinatura: FwLogger():getLogger():info|warn|error|debug(cMsg, oContexto)
Retorna: void
FwLogger e o substituto moderno do ConOut. Suporta niveis de severidade, contexto estruturado (key/value), output em arquivo ou console, e e thread-safe.
Niveis
local oLog as object
oLog := FwLogger():getLogger()
oLog:debug('Detalhes pra debug')
oLog:info('Operacao normal')
oLog:warn('Algo suspeito mas nao critico')
oLog:error('Erro grave')Com contexto estruturado
local oLog as object
local oCtx as json
oLog := FwLogger():getLogger()
oCtx := { ;
'cliente' => '000001', ;
'valor' => 1500.50, ;
'tx_id' => FwUuidV4() ;
}
oLog:info('Pedido criado', oCtx)
// Output: {"level":"info","msg":"Pedido criado","cliente":"000001","valor":1500.50,"tx_id":"..."}Por que substituir ConOut
- Niveis: filtra debug em prod sem mexer em codigo
- Estruturado: facil de parsear (ELK, Datadog, Grafana Loki)
- Thread-safe: nao mistura output em rotinas paralelas
- Performance: ConOut bloqueia thread em IO, FwLogger usa buffer
Configuracao do nivel
Configurado em appserver.ini:
[General]
LogLevel=info ; debug | info | warn | error
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
cMsg | Character | sim | Mensagem principal |
oContexto | JsonObject | não | Dados estruturados extras |
Exemplos
Log com contexto
FwLogger():getLogger():info('Pedido OK', {'id' => cId})