SlideShare uma empresa Scribd logo
LOGGING AND
MONITORING Rafael Chagas
@rafaelchagasb
VOCÊ JÁ
CONVERSOU
COM SEU CÓDIGO DE
PRODUÇÃO HOJE?
E SE EU TE FALASSE
QUE EU CONVERSO COM
MEU CÓDIGO
QUASE TODO DIA
VOCÊ
ACREDITARIA!?
VAMOS
FALAR UM
POUCO
SOBRE
LOGS
Para ser
mais exato,
vamos
falar...
Boas
práticas
para escrita
de logs
Inspirado no artigo da @vanessagl2
https://medium.com/@vanessagl2/boas-pr%C3%A1ticas-para-escrita-de-logs-parte-1-c5d7bd191ad0
Créditos
VAMOS CONHECER A
HISTÓRIA DE
ANA’NET E JOÃO
JAVA
NO DIA 20/06/2018
ANA E JOÃO TERMINARAM
SEU RELACIONAMENTO
FIM
PORQUE?
.VAMOS AOS FUXICOS...
NO DIA 11/06/2018
ANA E JOÃO
BRIGARAM
AINDA NÃO MATOU A
CURIOSIDADE?
NO 04/05/2018
ANA E JOÃO SE
CONHECERAM
NO DIA 05/05/2018
ANA E JOÃO
TROCARAM MENSAGENS
NO DIA 29/05/2018
ANA E JOÃO
COMEÇARAM A NAMORAR
AINDA NÃO
DESCOBRI O
MOTIVO?
JOÃO FOI PARA UMA BALADA
COM UMAS AMIGAS
JOÃO SAIU COM
OS AMIGOS E ESQUECEU
O JANTAR COM OS PAIS DE ANA
E CADÊ
OS LOGS,
CARA?
VOCÊ
NÃO OUVIU
NADA QUE
EU DISSE?
ESSES SÃO
OS LOGS
DO NAMORO DE
ANA E JOÃO
INFO
04/05/2018
ANA E JOÃO SE
CONHECEM
DEBUG
04/05/2018
ANA COMENTA COM
JOÃO QUE ODEIA
COMIDA JAPONESA
INFO
05/05/2018
ANA E JOÃO TROCAM
MENSAGENS
INFO
29/05/2018
ANA E JOÃO
COMEÇAM A
NAMORAR
INFO
03/06/2018
JOÃO LEVA ANA
PARA JANTAR
DEBUG
03/06/2018
JOÃO LEVA ANA EM
UM RESTAURANTE
JAPONÊS
DEBUG
03/06/2018
ANA DIZ NOVAMENTE
QUE ODEIA
COMIDA JAPONESA
DEBUG
08/06/2018
JOÃO VAI PARA UMA
BALADA COM UMAS
AMIGAS
DEBUG
10/06/2018
JOÃO ESQUECE O
ALMOÇO COM OS PAIS
DA ANA
WARN
11/06/2018
ANA E JOÃO
BRIGAM
ERROR
20/06/2018
ANA E JOÃO
TERMINAM SEU
RELACIONAMENTO
Use
níveis
de log
error
warn
info
debug
#2
Cuidados
com os
efeitos colaterais
log.info("Nome da cidade: {} ",
api.getCidade(idCidade).getNome());
log.info("Nome da cidade: {} ",
api.getCidade(idCidade).getNome());
CONSULTA BANCONULLPOINTER
Mensagens
concisas
e
descritivas
log.error("Algo deu errado...");
log.error("Erro na base de dados...");
log.error("[Cadastro cliente] Atualização do "
+ "cadastro do cliente com id: {} falhou", id);
Registre suas
exceções da
maneira
adequada
try{
//regra de negócio
}catch(NegocioException e){
log.error("Não foi possível agendar "
+ "a consulta para o usuário");
}
try{
//regra de negócio
} catch(NegocioException e){
log.error("Erro ao agendar a consulta para o" +
" usuario de id {}" +
" na instituição de id {}.",
idUsuario, idInstituicao);
}
Logue os
argumentos e
valores de
retorno
public string uploadImage(long idCliente,
byte[] imagem)
{
log.info("Iniciado upload do avatar " +
"do cliente de id:{}", idCliente);
//codigo
log.info("Upload finalizado." +
"Imagem com URL:{} ", urlImagem);
return urlImagem;
}
Sistemas
Externos
public void buscarEndereco(String cep) {
log.debug("Buscando endereço do cep {}",cep);
Endereco endereco = api.buscarEndereco(cep);
//valida nulo
log.debug("Endereço encontrado. Rua: {}" +
+ " - Cidade: {} ",
endereco.getRua(), endereco.getCidade());
}
Lance
corretamente
suas exceções
br.com.rafaelchagasb.Excecao1: erro
at br.com.rafaelchagasb.Teste.metodo1(Teste.java:34)
at br.com.rafaelchagasb.Teste.executar(Teste.java:22)
at br.com.rafaelchagasb.Teste.main(Teste.java:12)
public void metodo1(){
try{
//codigo
}
catch(Exception e){
throw new Excecao1("Erro");
}
}
NOT SURE IF REAL
OR FAKE
RELANCE AS EXCEÇÕES
public void metodo1(){
try{
//codigo
}
catch(Exception e){
throw new Excecao1("Erro", e);
}
}
br.com.rafaelchagasb.Excecao1: erro
at br.com.rafaelchagasb.Teste.metodo1(Teste.java:34)
at br.com.rafaelchagasb.Teste.executar(Teste.java:22)
at br.com.rafaelchagasb.Teste.main(Teste.java:12)
Caused by: br.com.rafaelchagasb.Excecao2: erro
at br.com.rafaelchagasb.Teste.metodo2(Teste.java:48)
at br.com.rafaelchagasb.Teste.metodo1(Teste.java:30)
... 2 more
Caused by: br.com.rafaelchagasb.Excecao3: erro
at br.com.rafaelchagasb.Teste.metodo3(Teste.java:56)
at br.com.rafaelchagasb.Teste.metodo2(Teste.java:44)
... 3 more
Use tags
e padrões
2018-05-05 [CLIENTE_ID: 102] CLIENTE CADASTRADO
2018-05-05 [CLIENTE_ID: 102] ATUALIZOU EMAIL
2018-05-05 [CLIENTE_ID: 102] INICIO COMPRA SITE
2018-05-05 [CLIENTE_ID: 102] ADICIONOU PRODUTO CARRINHO
2018-05-05 [CLIENTE_ID: 102] ADICIONOU PRODUTO CARRINHO
2018-05-05 [CLIENTE_ID: 102] FINALIZOU COMPRA
2018-05-05 [CLIENTE_ID: 102] EMAIL DA NOTA FISCAL ENVIADA
#tags
2018-06-02 20:56:02
ERROR
br.com.rafalechagasb.Classe
metodo
[thread:27]
Essa é a mensagem do log.
#padrões
Use
ferramentas
I
BUSCA E
ANÁLISE
VISUALIZAÇÃO
COLETAR E
TRANSFORMAR
Finalizando
Liste o
fluxo
da
aplicação
Logue os
passos
do seu
fluxo
Revise
seus
logs
Obrigado!
@rafaelchagasb

Mais conteúdo relacionado

Semelhante a Logging and monitoring

Html5 storage api
Html5 storage apiHtml5 storage api
Html5 storage api
Suissa
 
Como webscraping pode ajudar no Marketing?
Como webscraping pode ajudar no Marketing?Como webscraping pode ajudar no Marketing?
Como webscraping pode ajudar no Marketing?
Thiago Rocha
 
Javascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POOJavascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POO
Wesley Lemos
 

Semelhante a Logging and monitoring (20)

Design de APIs RESTful Seguras e Escaláveis
Design de APIs RESTful Seguras e EscaláveisDesign de APIs RESTful Seguras e Escaláveis
Design de APIs RESTful Seguras e Escaláveis
 
Design de APIs RESTful – Seguras, Escaláveis e Interoperáveis, por Kleber Bacili
Design de APIs RESTful – Seguras, Escaláveis e Interoperáveis, por Kleber BaciliDesign de APIs RESTful – Seguras, Escaláveis e Interoperáveis, por Kleber Bacili
Design de APIs RESTful – Seguras, Escaláveis e Interoperáveis, por Kleber Bacili
 
Html5 storage api
Html5 storage apiHtml5 storage api
Html5 storage api
 
Como webscraping pode ajudar no Marketing?
Como webscraping pode ajudar no Marketing?Como webscraping pode ajudar no Marketing?
Como webscraping pode ajudar no Marketing?
 
Oficina: Introdução à programação com Python e seus recursos: algoritmos e ló...
Oficina: Introdução à programação com Python e seus recursos: algoritmos e ló...Oficina: Introdução à programação com Python e seus recursos: algoritmos e ló...
Oficina: Introdução à programação com Python e seus recursos: algoritmos e ló...
 
Aula 1 - Curso de PHP/CI e Tecnologias Relacionadas
Aula 1 - Curso de PHP/CI e Tecnologias RelacionadasAula 1 - Curso de PHP/CI e Tecnologias Relacionadas
Aula 1 - Curso de PHP/CI e Tecnologias Relacionadas
 
Quebrando o monolito com microserviços - TDC 2017
Quebrando o monolito com microserviços - TDC 2017Quebrando o monolito com microserviços - TDC 2017
Quebrando o monolito com microserviços - TDC 2017
 
Acenda a sua luz com Javascript
Acenda a sua luz com JavascriptAcenda a sua luz com Javascript
Acenda a sua luz com Javascript
 
Abraçando a mudança com Código
Abraçando a mudança com CódigoAbraçando a mudança com Código
Abraçando a mudança com Código
 
Nas internas do CartolaFC: como é a nova arquitetura do game feita para supor...
Nas internas do CartolaFC: como é a nova arquitetura do game feita para supor...Nas internas do CartolaFC: como é a nova arquitetura do game feita para supor...
Nas internas do CartolaFC: como é a nova arquitetura do game feita para supor...
 
Graphql - o que é, onde e porque usar?
Graphql - o que é, onde e porque usar?Graphql - o que é, onde e porque usar?
Graphql - o que é, onde e porque usar?
 
Codelab - Actions on Google
Codelab - Actions on GoogleCodelab - Actions on Google
Codelab - Actions on Google
 
Javascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POOJavascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POO
 
Track Your World (web analytics para todos) - Huxley Dias
Track Your World (web analytics para todos) - Huxley DiasTrack Your World (web analytics para todos) - Huxley Dias
Track Your World (web analytics para todos) - Huxley Dias
 
GraphQL na Era das APIs
GraphQL na Era das APIsGraphQL na Era das APIs
GraphQL na Era das APIs
 
Da argila ao forte: como desenvolver uma loja com PagSeguro
Da argila ao forte: como desenvolver uma loja com PagSeguroDa argila ao forte: como desenvolver uma loja com PagSeguro
Da argila ao forte: como desenvolver uma loja com PagSeguro
 
Cobrancas online na sua aplicacao com MoIP
Cobrancas online na sua aplicacao com MoIPCobrancas online na sua aplicacao com MoIP
Cobrancas online na sua aplicacao com MoIP
 
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHPPog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
 
Casperjs-tdc-2016.ppt
Casperjs-tdc-2016.pptCasperjs-tdc-2016.ppt
Casperjs-tdc-2016.ppt
 
Django para infográficos
Django para infográficosDjango para infográficos
Django para infográficos
 

Logging and monitoring