Como utilizar logs estruturados com log/slog

Lançado recentemente, o Go 1.21 trouxe um novo package padrão na linguagem, o log/slog. Embora Go tenha um package de logs desde seu lançamento, ao longo dos anos, ficou claro que as aplicações Go precisavam de logs estruturados.

Diferente do formato padrão em texto puro, logs estruturados utilizam o formato chave=valor, facilitando muito na hora de fazer parse, buscar e analisar os logs.

Embora existam vários packages open source que desempenham esse papel, sendo o logrus um dos mais famosos, todos os anos, a comunidade continuava pedindo ao time do Go que essa funcionalidade fosse adicionada ao package oficial da linguagem.

Nesse post, vou explorar um pouco desse package, mostrando as principais funções e formas de utilização.

Leia mais »

Escrevendo logs em formato JSON com zerolog

Algum tempo atrás fizemos um post falando sobre como escrever logs em arquivos. No post em questão, logamos algumas mensagens de forma bem simples. Normalmente esses logs em texto puro são um pouco complicados para filtrar mensagens, já que é preciso muito regex.

Nesse post vamos abordar os logs de uma forma diferente, pois vamos escreve-los em formato JSON.

Para nos auxiliar nessa tarefa, vamos utilizar um package chamado zerolog. Esse package foi criado pelo Olivier Poitrey, atual diretor de engenharia do Netflix.

Gosto muito desse package pois ele é fácil de usar e tem uma performance muito boa.

Sem mais enrolação, vamos instalar o package e começar a brincar com ele.

$ go get -u github.com/rs/zerolog/log
Leia mais »