Groveman: The best logging for Dart/Flutter applications 🐛

Lucas NáiadeLucas Náiade
2 min read

Sabemos que nenhum desenvolvedor Flutter vive apenas de debugPrint(não em teoria) e que dentro deste universo de packages temos os tão amados packages de logging e cada um deles com suas peculiaridades.

De modo geral muitos destes packages vão além da função de ajudar no debug e mostrar logs de forma legível e organizada, chegam até ao ponto de ajudar em adicionar observabilidade e contexto em aplicativos já em produção. Desta vez vou apresentar o package Groveman.

Na voz do dev

Fiz três perguntas ao Kauê Martins, mantenedor e criador do package Groveman e ele dá um panorama de pôr qual razão o Groveman existe.

O Groveman basicamente é uma versão do Timber do ecossistema Android só que para Flutter, que visa melhorar o gerenciando dos logs de uma aplicação, cito como exemplo, a possibilidade de exibir determinados logs de acordo com o flavor do seu aplicativo.Groveman (Homem do bosque) é pra passar a ideia de realmente alguém está plantando uma árvore (Groveman.plantTree).Martins, Kauê; 2022.

Usando

Você pode começar adicionando as dependências do pubspec.yaml ou chamando o cli flutter pub add groveman. Depois disso só basta inicializar o logging. Uma coisa bem legal aqui, é que você pode adicionar várias trees e cada uma delas desempenhar um papel diferente.

void main(){  
    Groveman.plantTree(DebugTree()); // Mostra logs somente em debug...

Podemos usar 5 níveis de logging : fatal, error, warning, info, debug.

Groveman.debug(); 
Groveman.info('info', tag: 'info'); 
Groveman.warning('error', tag: 'info', 
  extra: <String, Object>{
     'name': 'Jungle',
     'trees': 50,
   }, ); 
Groveman.error('info', tag: 'info', error: Error());
Groveman.fatal('info', tag: 'info', stackTrace: StackTrace.current);

Segundo o readme.md : 'There are no Tree implementations installed by default because, second Timber, every time you log in production, a puppy dies.'

Estendendo

Também podemos usar outras Trees e enviar os logs para um serviço como o Sentry por exemplo, esses Trees adicionais são disponibilizadas em packages separados, temos o Groveman Sentry e o Groveman Crashlytics.

Caso em sua stack você use um outro serviço de logging como por exemplo o ElasticSearch ou Datadog você pode simplesmente implementar sua própria Tree e nela você decide o que é importante ou não.

Finalizando

O package Groveman encara e resolve bem os problemas comuns no desenvolvimento de apps Flutter com uma mensagem legal de consciência social. Não se esqueça, plante arvores. 🌳🌳🌳

1
Subscribe to my newsletter

Read articles from Lucas Náiade directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Lucas Náiade
Lucas Náiade