Node.js console.log vs console.info

96

Qual é a vantagem de usar console.logvs console.info? Ou qualquer um dos outros comandos do console para esse assunto?

console.info("info");
console.error("error");
console.warn("warn");

vs

console.log("log");

Achei que isso pudesse mudar a cor da saída ou concatenar algum tipo de rótulo, mas parece que todos fazem a mesma coisa. E de acordo com a documentação aqui:

https://nodejs.org/api/console.html#console_console_info_data

eles parecem fazer o mesmo que console.log

Seantomburke
fonte
Possível duplicata de: stackoverflow.com/questions/14437428/…
Craig Wayne
3
Algumas dicas: Você pode usar cores para ter uma visão melhor de: console.log ('% c Texto de amostra', 'color: green;'); Ou adicione algum VAR no texto usando: console.log (`Sample $ {variable}`, 'color: green;');
Gilberto B. Terra Jr.
Obrigado, eu não sabia que também funcionava no node js

Respostas:

83

De acordo com a documentação que você vinculou console.errore as console.warnsaídas para stderr. Os outros enviam para stdout.

Se você está fazendo tubulação ou redirecionamento a partir node.jsda diferença é importante.

Há muito JavaScript escrito para rodar no navegador e Node.js. Ter o nó implementar o console completo permite maior compatibilidade cruzada de código.

Na maioria dos navegadores, esses log não apenas em cores diferentes, mas você também pode filtrar para ver mensagens específicas.

console.info("info");
console.error("error");
console.warn("warn");
console.log("log");
Jeremy J Starcher
fonte
Obrigado! Foi no navegador que apareceu de forma diferente. Eu estava procurando no terminal as mudanças de cor.
seantomburke de
2
Em node( 8.11.4) e Chrome 67, há também console.debug(e provavelmente versões anteriores também). debugclassifica abaixo log.
Marcus Junius Brutus
40

console.log() é mais curto que console.info()

Eles são a mesma coisa, e essa é a única vantagem.

insira a descrição da imagem aqui

Max
fonte
67
Eu votei negativamente porque "essa é a única vantagem" simplesmente não é verdade e é muito míope. Os métodos podem ter exatamente a mesma implementação, mas têm significados diferentes . console permite implementar filtragem de nível de log trivialmente, por exemplo.
rixo
4
console.log = stdout, enquanto console.error = stderr
Craig Wayne
9
developer.mozilla.org/en-US/docs/Web/API/Console/info - "No Firefox e no Chrome, um pequeno ícone" i "é exibido próximo a esses itens no log do console da web" - image.ibb .co / gYrZHe / infolog.png
ed
5
@EdwardSammutAlessi Estou usando o Chrome e não foi possível recriar e fazer o ícone i aparecer
chevybow
Um ponto de dados: Firefox 78: imprime ⓘ (i no círculo) antes da saída log.info. Chrome 84: não.
Tom Hundt
34

Embora console.loge console.infopossam não ser diferentes, existem outros usos, exceto mera coloração. Por exemplo, ao usar um linter como o eslint, você pode configurar console.logpara fornecer uma mensagem de aviso. Digamos que você deseja usar apenas console.logpara fins de desenvolvimento e usar console.infopara informações de que os usuários finais podem precisar. Com um linter agora você tem um lembrete visível e direto de seu temporário console.logque o ajuda durante o desenvolvimento, mas deve ser removido antes de commits / publicar.

Figidon
fonte
3
Não sei porque achei esta resposta mais apropriada do que todas as outras, simpática @Figidon.
Shreyan Mehta
1
Eu concordo. Ótima solução para usar com eslint para modo de desenvolvimento e produção. Você não deve passar console.log! (bastão e espada em mãos)
Tomas Vancoillie
26

De acordo com os documentos , é bastante claro.

console.info ([data], [...]) # Igual a console.log.

console.error ([data], [...]) # O mesmo que console.log, mas imprime em stderr.

console.warn ([data], [...]) # O mesmo que console.error.

Isso significa que não há benefício ou desvantagem. info== loge warn== error. A menos que você deseja imprimir stderr, infoe ou logvai funcionar.

Sterling Archer
fonte
23

Visualmente, nenhuma diferença realmente entre console.log, console.info, console.warn, bem como console.errorsobre o lado do servidor (terminal) .

No entanto, existem módulos leves que agregam azul, laranja e tons de vermelho para console.info, console.warn, bem como console.error, respectivamente. Por isso, a API do console se comporta como do lado do cliente.

 npm i console-info console-warn console-error --save-dev;

insira a descrição da imagem aqui

Abdennour TOUMI
fonte
10

Mais um detalhe além da resposta aceita: no Chrome e no FireFox, console.infoas linhas de registro são prefixadas com um pequeno ícone i , enquanto as console.loglinhas não. warne as errorlinhas são prefixadas com um pequeno triângulo ex , respectivamente.

Bill Hoag
fonte
Conforme observado em outro lugar: Firefox 78: imprime ⓘ (i no círculo) antes da saída log.info. Chrome 84: não
Tom Hundt
3

stdin Um fluxo legível para ler a entrada do usuário.

stdout Um fluxo gravável, de forma síncrona ou assíncrona.

stderr Um fluxo de bloqueio gravável síncrono destinado a mensagens de erro.

As funções stdout ou sem bloqueio são: console.log, console.info, util.puts, util.print e Stderr.

As funções de bloqueio são: console.warn, console.error, util.debug e process.stdin (um fluxo legível para obter a entrada do usuário).

Avinash Maurya
fonte
2

Foi estabelecido que log e informações são basicamente a mesma coisa, mas não tenho certeza se isso responde completamente à pergunta:

Qual é a vantagem de usar console.log versus console.info?

Um benefício, além do que já foi mencionado, é que você pode usar cada um para um propósito diferente. Por exemplo, você pode usar console.log apenas para depurar rapidamente e enviar informações para o console, enquanto pode usar console.info para mensagens permanentes que deseja enviar para o console em seu código, como informações sobre o status atual do aplicativo . Então, quando você tem uma situação em que um objeto aleatório é impresso em seu console e você percebe que deixou uma declaração de log lá em algum lugar por acidente, você pode fazer uma pesquisa global por 'console.log' e excluir todas as instâncias e ter confiança você não excluiu nada importante que pretendia deixar lá.

dallin
fonte
0

Os diferentes níveis de registro permitem que você gerencie o nível de ruído em seu console: Tanto no Firefox (estou usando 78 agora) quanto no Chrome (84), o console js permite que você escolha o "nível de depuração" de saída que deseja Vejo. FF permite alternar a visibilidade console.error, .warn, .log, .info, e .debugmensagens, clicando nos botões individuais para cada (que mostram quantos foram suprimidos, quando "off"), enquanto o Chrome tem uma lista suspensa com marcas de seleção ao lado dos itens ( .infoe .logsão controlados por o "Info" e .debugpor "Detalhado"). O rótulo suspenso do Chrome ("Todos os níveis" ou o que você definir) ficará vermelho se a saída for suprimida.

Tom Hundt
fonte
0

Eu vi onde console.logestá o registro temporário de informações de estado para depuração.

console.info é uma coisa mais permanente - como dizer em qual porta algo está sendo executado e algo que você não cortaria depois de terminar a depuração.

Isso torna mais fácil limpar seu código para confirmá-lo. Você pode até mesmo fazer com que seu linter tenha uma regra para impedir que console.log seja confirmado.

RobKohr
fonte