VamosJuntas / vamosjuntas-api

REST API do Vamos Juntas!
5 stars 1 forks source link

Adicionar loggers para análise em produção #16

Closed wcalderipe closed 7 years ago

gabrielacorrea commented 7 years ago

Está no board novo.

yrachid commented 7 years ago

O que vamos considerar no escopo dessa estória? Podemos fazer logs em arquivos e logs em console ou apenas um dos dois? Qual faria mais sentido?

Além disso, talvez para uma estória posterior, existe interesse em utilizar uma ferramenta de análise de código e test coverage? No momento estou experimentando duas ferramentas par isso, a Codacy e a Bithound. Se for do interesse do time, podemos abrir um spike para dar uma estudada nelas e ver se faz sentido integrar ao projeto.

wcalderipe commented 7 years ago

@othman853 Tendo em vista que é para o MVP1 podemos usar logs do console já que conseguimos exportar isso sem muito esforço para um arquivo .log caso seja necessário.

O escopo da estória seria implementar o logger para as requisições e respostas que entram e saem do restify para não ficarmos totalmente no escuro do que está batendo a nossa porta.

yrachid commented 7 years ago

O que acham então de adotarmos o Winston? Ele tem um esquema de Transports que separa e provê diferentes repositóris de logs (console, arquivo, banco, etc), tem um sistema de levels e categories muito interessante e prático, além de ter uma estratégia de rewritting de logs caso precisemos higienizar alguma informação. Estou utilizando ele em outros projetos (da maneira errada, o que é bom, porque agora aprendi um pouco mais sobre como usar o Winston de forma mais eficiente) e me parece bastante prático evoluir no futuro para quando a necessidade crescer e pedir mais do que logs em console. O winston parece escalar bem nesse ponto de vista.

wcalderipe commented 7 years ago

Confio em ti para tomar a decisão do que é a melhor ferramenta. :) Mas quero só deixar claro que se o problema for "como vai ser o output dos logs (console, file, etc..)" isso pode ser também resolvido com um gerenciador de processos do node como o pm2, que ao rodar um script em node ele já cria arquivos de logs, e também prove algumas features como merge dos logs quando se tem cluster rodando diferentes instâncias do mesmo script só não me recordo se ele prove alguma maneira de rewritting (acredito que não). Acho legal ver qual a nossa primeira necessidade e estudar as opções.

O que queremos logar agora? (Apenas as requests que entram em nosso serviço, dados do fluxo do usuário, etc..) Precisamos de um rewritting de logs? Se sim, para quê/porquê? Qual o esforço vs. ganhos das opções que temos?

lucaslago commented 7 years ago

Vale a pena dar uma olhada no morgan. É bem simples e combinado com pm2 parece suprir a necessidade de logar apenas as requests.

Se forem usar pm2 também recomendo linkar com o keymetrics para monitoramento remoto de tempo de respostas HTTP, uso de CPU e etc.

yrachid commented 7 years ago

@lucaslago, @wcalderipe Legal! Eu tava experimentando o pm2, mas com o winston ao invés do morgan. Me parece ser uma solução bem interessante. Os logs ficam assim ao executar um pm2 logs:

captura de pantalla 2016-10-18 a las 1 51 40
wcalderipe commented 7 years ago

Feature adicionada na PR https://github.com/VamosJuntas/vamosjuntas-api/pull/19