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ível | Quando |
|---|---|
debug | detalhe para quem está depurando — desligado em produção |
info | o que aconteceu e alguém pode querer contar depois |
warn | algo inesperado que o programa contornou |
error | falhou, e alguém vai precisar olhar |
fatal | o processo não tem como seguir |