Pular para o conteúdo

Logs estruturados

Uma linha de JSON por evento, com os campos para filtrar — e o que nunca vai para o log.

"pedido 7 criado por ana em 3,2 s" é legível para uma pessoa e inútil para uma busca: achar todos os pedidos lentos exige uma expressão regular por formato de frase. Em JSON, cada informação é um campo, e a busca é uma consulta.

dataforge
adopt Arcane.Logging as Log

log := Log.logger("pedidos")
log.as_json()
log.info("pedido criado", {"pedido": 7, "usuario": "ana", "duracao_s": 3.2})
text
{"time": "2026-09-22T10:55:14", "level": "INFO", "logger": "pedidos",
 "message": "pedido criado", "pedido": 7, "usuario": "ana", "duracao_s": 3.2}
NívelQuando
debugdetalhe para quem está depurando — desligado em produção
infoo que aconteceu e alguém pode querer contar depois
warnalgo inesperado que o programa contornou
errorfalhou, e alguém vai precisar olhar
fatalo processo não tem como seguir