DEV Community

Cover image for Indo além do console.log
Leticia Campos for WoMakersCode

Posted on • Edited on

Indo além do console.log

Durante o desenvolvimento web é muito comum utilizar o método console.log para depurar um código JavaScript, mas você sabia que o console é um objeto? E é este objeto que fornece acesso ao console de debug do navegador.

De acordo com o portal developer.mozilla.org:

O funcionamento dessa console API varia de navegador para navegador.

Neste artigo foi utilizado o navegador Chrome 😉.

Para visualizar quais são os métodos possíveis do console, basta digitar console.log(console) no terminal e você terá um retorno parecido com esse:

console {debug: ƒ, error: ƒ, info: ƒ, log: ƒ, warn: ƒ, }
assert: ƒ assert()
clear: ƒ clear()
context: ƒ context()
count: ƒ count()
countReset: ƒ countReset()
debug: ƒ debug()
dir: ƒ dir()
dirxml: ƒ dirxml()
error: ƒ error()
group: ƒ group()
groupCollapsed: ƒ groupCollapsed()
groupEnd: ƒ groupEnd()
info: ƒ info()
log: ƒ log()
memory: (...)
profile: ƒ profile()
profileEnd: ƒ profileEnd()
table: ƒ table()
time: ƒ time()
timeEnd: ƒ timeEnd()
timeLog: ƒ timeLog()
timeStamp: ƒ timeStamp()
trace: ƒ trace()
warn: ƒ warn()
Symbol(Symbol.toStringTag): "Object"
get memory: ƒ ()
set memory: ƒ ()
__proto__: Object
Enter fullscreen mode Exit fullscreen mode

Aqui neste artigo irei abordar somente os seguintes métodos:

🗃️ console.log

O método log() existe essencialmente para permitir o envio de dados para o console de depuração do navegador. Pode ser enviada qualquer informação, normalmente com o intuito de depurar código.

console.log([
    { book: "Domain-Driven Design: Atacando as Complexidades no Coração do Software", author: "Martin Fowler" }, 
    { book: "Arquitetura Limpa: O guia do artesão para estrutura e design de software", author: "Robert C. Martin" },
    { book: "Por que os generalistas vencem em um mundo de especialistas", author: "David Epstein" }
]);
Enter fullscreen mode Exit fullscreen mode

saída:

(3) [{}, {}, {}]
0:
author: "Martin Fowler"
book: "Domain-Driven Design: Atacando as Complexidades no Coração do Software"
__proto__: Object
1:
author: "Robert C. Martin"
book: "Arquitetura Limpa: O guia do artesão para estrutura e design de software"
__proto__: Object
2:
author: "David Epstein"
book: "Por que os generalistas vencem em um mundo de especialistas"
__proto__: Object
length: 3
__proto__: Array(0)
Enter fullscreen mode Exit fullscreen mode

🎨 console.log com css

Já imaginou usar o método log() personalizando a mensagem com CSS? Sim, é possível.

log-css

exemplo:

const style = 'color:red; font-size:30px; font-weight: bold; -webkit-text-stroke: 1px black;'
console.log("%c JavaScript é muito maneiro!", style);
Enter fullscreen mode Exit fullscreen mode

saída:

saida-log-css

⚠️ console.warn

O método warn() possui um comportamento parecido com o .log() em alguns navegadores ele inclui um ícone de warning a mensagem.

console.warn('mensagem de warning');
Enter fullscreen mode Exit fullscreen mode

saída

warn

❌ console.error

O método error() possui um comportamento parecido com o .log() em alguns navegadores ele inclui um ícone de erro a mensagem.

console.error('mensagem de erro');
Enter fullscreen mode Exit fullscreen mode

saída

erro

📑 console.table

O método table() exibe qualquer dado do tipo array de array, array de objetos ou um objeto com objetos aninhados formatados em uma tabela.

console.table([
    { book: "Domain-Driven Design: Atacando as Complexidades no Coração do Software", author: "Martin Fowler" }, 
    { book: "Arquitetura Limpa: O guia do artesão para estrutura e design de software", author: "Robert C. Martin" },
    { book: "Por que os generalistas vencem em um mundo de especialistas", author: "David Epstein" }
]);
Enter fullscreen mode Exit fullscreen mode

saída

table

👪 console.group

O método group() exibe os dados de forma estruturada, sendo capaz de criar estruturas profundas e recolhíveis em seu console. Dessa forma é possível ocultar e organizar os seus registros.

Cada chamada de console feita após invocar o método de grupo, encontrará seu lugar dentro do grupo criado. Para finalizar, você deve usar um console.groupEnd()

console.group();
console.log("Esse é o 1° Grupo");
console.group();
console.log("Esse é o 2° Grupo");
console.groupEnd();
console.groupEnd();
console.log("Sai do escopo de grupos");
Enter fullscreen mode Exit fullscreen mode

saída

group

🧮 console.count

O método count() conta quantas vezes ele foi chamado, esse é um método muito útil no caso de você ter tantos logs na sua aplicação e não sabe quantas vezes determinadas partes do código foram executadas. Para redefinir o contador utilize o método console.countReset().

console.count();
console.count();
console.count();
console.countReset();
console.count();
Enter fullscreen mode Exit fullscreen mode

saída

default: 1
default: 2
default: 3
default: 1
Enter fullscreen mode Exit fullscreen mode

⌚ console.time

O método time() serve como uma contagem de tempo, sendo possível fazer testes de desempenho rápidos para partes do seu código. Neste exemplo inicio com um console.time() método que pode receber um argumento opcional como um rótulo ou identificação para o temporizador fornecido. O cronômetro mencionado inicia apenas no momento de invocar este método. Em seguida, uso os métodos console.timeLog() e console.timeEnd() (com argumento de rótulo opcional) para registrar seu tempo (em milissegundos) e encerrar o cronômetro respeitado de acordo.

console.time();
// trecho de código 1
console.timeLog(); // default: [time] ms
// trecho de código 2
console.timeEnd(); // default: [time] ms
Enter fullscreen mode Exit fullscreen mode

saída

default: 0.009033203125 ms
default: 0.151123046875 ms
Enter fullscreen mode Exit fullscreen mode

E ai, o que achou? Muito legal né? Caso tenha algum método que não foi abordado aqui mas que você tenha dúvidas de sua implementação e funcionalidade, fique a vontade para comentar 😊

Top comments (10)

Collapse
 
danielle8farias profile image
ダニエリ

Que post maravilhoso! Por algum motivo desconhecido ele passou batido aqui nas minhas notificações, mas que bom que pude ter a oportunidade de lê-lo agora. Ainda sou iniciante no JS, mas com certeza precisarei utilizar o que foi descrito aqui. Guardarei com carinho para referências futuras!

Collapse
 
leticiacamposs2 profile image
Leticia Campos • Edited

Que incrível, fico muito feliz de saber disso e me motiva a compartilhar cada vez mais! Fique a vontade para me chamar por aqui ou outras redes se precisar. Bons estudos! ❤️

Collapse
 
renatorocker1337 profile image
Jose Renato

Ótimo conteúdo, parabéns!

Collapse
 
leticiacamposs2 profile image
Leticia Campos

Obrigada

Collapse
 
alvarocneto profile image
Alvaro Camillo Neto

Excelente!

Collapse
 
leticiacamposs2 profile image
Leticia Campos

Obrigada

Collapse
 
reginadiana profile image
Diana Regina

Que artigo legal!! Parabéns =) <3

Collapse
 
leticiacamposs2 profile image
Leticia Campos

Obrigada <3 <3

Collapse
 
silverio27 profile image
Lucas Silvério

Poxa, muito legal !!!

Collapse
 
leticiacamposs2 profile image
Leticia Campos

Legal né? Fico feliz que curtiu o post :)