Logging

O módulo logger escreve mensagens estruturadas nos níveis debug, info, warn e error.

Esta é uma referência de API. Cada exemplo é uma operação de logging isolada e pressupõe um contexto de execução com a configuração de logger desejada.

As chamadas de log não retornam valores. Quando o contexto de execução os fornece, cada chamada também adiciona o pid do processo e a location de origem derivada do frame atual.

Carregamento

local logger = require("logger")

Níveis de log

logger:debug

Escreve uma mensagem de log no nível debug.

logger:debug("message", {key = "value"})

logger:info

Escreve uma mensagem de log no nível info.

logger:info("message", {key = "value"})

logger:warn

Escreve uma mensagem de log no nível warning.

logger:warn("message", {key = "value"})

logger:error

Escreve uma mensagem de log no nível error.

logger:error("message", {key = "value"})
Parâmetro Tipo Descrição
message string Mensagem de log
fields table? Pares chave-valor contextuais

Os quatro métodos de nível de log aceitam os mesmos parâmetros. Apenas chaves string se tornam nomes de campos. Strings, números, inteiros, booleanos, erros e valores Lua estruturados são convertidos em campos de log; chaves que não sejam strings são ignoradas.

Em logger:error, um campo chamado error é emitido como campo de erro e removido da tabela fornecida antes do processamento dos demais campos. Não reutilize essa tabela se a entrada error precisar permanecer intacta.

Customização do Logger

logger:with

Cria um logger filho que adiciona os mesmos campos a todas as mensagens.

local function request_logger(request_id)
    return logger:with({request_id = request_id})
end

request_logger("req-123"):info("message")
Parâmetro Tipo Descrição
fields table Campos para anexar a todos os logs

Retorna: Logger

O logger original não é alterado. Loggers filhos podem encadear chamadas adicionais a with e named.

logger:named

Cria um logger filho com um nome.

local named = logger:named("auth")
named:info("message")
Parâmetro Tipo Descrição
name string Nome do logger

Retorna: Logger

Um nome vazio gera um erro de argumento Lua. Ele não é retornado como valor estruturado errors.INVALID.

logger:named("") levanta um erro de argumento Lua (name cannot be empty) em vez de retornar um valor de erro. Os métodos de logging não retornam nada.

Veja Error Handling para trabalhar com erros.