Existe alguma maneira de desativar todas as console.log
instruções no meu código JavaScript, para fins de teste?
javascript
debugging
console
Zack Burt
fonte
fonte
PICOLOG_LEVEL
(nó) e é super pequeno. Menos de 900 bytes compactados e compactados. Disclaimer: Eu sou o autor.console
funções. Basta olhar para stapp.space/disable-javascript-console-on-productionRespostas:
Redefina a função console.log no seu script.
É isso aí, não há mais mensagens para o console.
EDITAR:
Expandindo a ideia de Cide. Um criador de logs personalizado que você pode usar para ativar / desativar o logon do seu código.
No meu console Firefox:
Como usar o 'logger' acima? No seu evento pronto, chame logger.disableLogger para que as mensagens do console não sejam registradas. Adicione chamadas a logger.enableLogger e logger.disableLogger dentro do método para o qual você deseja registrar mensagens no console.
fonte
console.log
... Por que não apenas ter uma função booleana e condicional para o log?O seguinte é mais completo:
Isso zerará os métodos comuns no console, se houver, e eles podem ser chamados sem erros e praticamente sem sobrecarga de desempenho. No caso de um navegador como o IE6 sem console, os métodos fictícios serão criados para evitar erros. Obviamente, existem muitas outras funções no Firebug, como rastreamento, perfil, hora, etc. Elas podem ser adicionadas à lista se você as usar no seu código.
Você também pode verificar se o depurador tem esses métodos especiais ou não (ou seja, IE) e zerar os que não são compatíveis:
fonte
Até onde eu sei pela documentação , o Firebug não fornece nenhuma variável para alternar o estado de depuração. Em vez disso, envolva console.log () em um invólucro que o chama condicionalmente, ou seja:
Para não precisar alterar todas as chamadas existentes, você pode usar isso:
fonte
Você não deveria!
Não é uma boa prática substituir funções internas. Também não há garantia de que você suprimirá toda a saída; outras bibliotecas usadas podem reverter suas alterações e existem outras funções que podem ser gravadas no console;
.dir()
,.warning()
,.error()
,.debug()
,.assert()
Etc.Como alguns sugeriram, você pode definir uma
DEBUG_MODE
variável e registrar condicionalmente. Dependendo da complexidade e natureza do seu código, pode ser uma boa ideia escrever seu próprio objeto / função de logger que envolva o objeto do console e tenha esse recurso embutido. Esse seria o lugar certo para lidar com a instrumentação .Dito isto, para fins de 'teste', você pode escrever testes em vez de imprimir no console. Se você não estiver fazendo nenhum teste, e essas
console.log()
linhas foram apenas uma ajuda para escrever seu código, basta excluí-las .fonte
"other libraries you use may revert your changes"
: se eu desativarconsole.log
no início, eles não poderão reverter para a função antiga. Bem, eles podem reescrever oconsole.log
código fonte, mas por quê?"it may be a good idea to write your own logger object/function that wraps around the console object"
: Eu fiz isso no passado e é uma má ideia. O rastreio da saída do console refere-se ao wrapper e não à linha que o chama, dificultando a depuração.console.log('Look ma, it reaches this point');
no seu código, quando tudo mais falhar, você poderá realmente usar asdebugger;
instruções."the code is coupled to that infrastructure"
: o código provavelmente, mas o padrão não. Se você criar um modelo básico comum para suas páginas nas quais as funções de log estão desativadas, é uma lógica que você pode aplicar em qualquer lugar."the later shouldn't be browser-aware"
: bem, então você não deve usar JS: PSei que este é um post antigo, mas ainda aparece no topo dos resultados do Google, então aqui está uma solução não-jQuery mais elegante que funciona nos mais recentes Chrome, FF e IE.
fonte
Sei que você perguntou como desativar o console.log, mas pode ser isso que você realmente procura. Dessa forma, você não precisa habilitar ou desabilitar explicitamente o console. Ele simplesmente evita esses erros irritantes do console para pessoas que não o abrem ou instalam.
fonte
Basta alterar o sinalizador
DEBUG
para substituir a função console.log. Isso deve fazer o truque.fonte
function myLog(msg) { if (debug) { console.log(msg); } }
Estou surpreso que, de todas essas respostas, ninguém combina:
Eu iria para isso:
fonte
Depois que procurei esse problema e tentei dentro do meu aplicativo cordova, só quero avisar todos os desenvolvedores para que o windows phone não substitua
porque o aplicativo falhará na inicialização.
Não irá falhar se você estiver desenvolvendo local, se tiver sorte, mas enviá-lo na loja resultará em falha no aplicativo.
Apenas substituir
se você precisar.
Isso funciona no meu aplicativo:
fonte
Se você estiver usando o IE7, o console não será definido. Portanto, uma versão mais amigável do IE seria:
fonte
É um híbrido de respostas de SolutionYogi e Chris S. Ele mantém os números da linha console.log e o nome do arquivo. Exemplo jsFiddle .
fonte
Se você usa o Grunt, pode adicionar uma tarefa para remover / comentar as instruções console.log. Portanto, o console.log não é mais chamado.
https://www.npmjs.org/package/grunt-remove-logging-calls
fonte
Eu tenho usado o seguinte para lidar com ele problema: -
Defina debug como 1 para habilitar a depuração. Em seguida, use a função de logger ao gerar texto de depuração. Também está configurado para aceitar dois parâmetros.
Então, ao invés de
usar
fonte
Eu usei o winston logger anteriormente.
Atualmente estou usando o código mais simples abaixo da experiência:
Defina a variável de ambiente de cmd / linha de comando (no Windows):
Ou, você pode ter uma variável em seu código, se quiser, mas acima é melhor.
Reinicie o cmd / linha de comando ou IDE / editor como o Netbeans
Tenha abaixo como código:
Agora use todo o console. * Como abaixo:
Agora, com base nas configurações LOG_LEVEL feitas no ponto 1 (como
setx LOG_LEVEL log
e reiniciar a linha de comando), algumas das opções acima serão impressas, outras não.Espero que tenha ajudado.
fonte
Atenção: Plug Shameless!
Você também pode usar algo como o meu objeto JsTrace para ter um rastreamento modular com o recurso de "comutação" no nível do módulo para ativar apenas o que você deseja ver no momento.
http://jstrace.codeplex.com
(Também possui um pacote NuGet, para quem se importa)
Todos os níveis são padronizados como "erro", mas você pode desativá-los. No entanto, não consigo pensar por que você NÃO gostaria de ver erros
Você pode alterá-los assim:
Para obter mais documentos, consulte a documentação
T
fonte
Encontrei um pedaço de código um pouco mais avançado neste URL Dica do JavaScript: Busque e desative o console.log :
fonte
Desenvolvi uma biblioteca para este caso de uso: https://github.com/sunnykgupta/jsLogger
Recursos:
log
,warn
,error
,info
.Está aberto a modificações e será atualizado sempre que novas sugestões surgirem.
fonte
Isso deve substituir todos os métodos do window.console. Você pode colocá-lo na parte superior da seção de scripts e, se estiver em uma estrutura PHP, poderá imprimir esse código apenas quando o ambiente do aplicativo estiver em produção ou se algum tipo de sinalizador de depuração estiver desativado. Então você teria todos os seus logs em seu código trabalhando em ambientes de desenvolvimento ou no modo de depuração.
fonte
Eu escrevi isto:
Infelizmente, ele não funciona no modo estrito.
Então, usando
console.fn.setEnabled = setEnabled
e,console.fn.setEnabled(false)
em seguida, ondefn
poderia haver quase qualquer função do console. Para o seu caso seria:Eu escrevi isso também:
então você só precisa colocar o
FLAGS
valor padrão (antes de executar o código acima), likeFLAGS.LOG = false
e a função de log seria desativada por padrão, e ainda assim você poderia habilitá-lo chamandoconsole.log.setEnabled(true)
fonte
console.log.setEnabled(true)
e começar a ver os logsvar debug = false; debug && console.log(1/3)
como você não precisa avaliar o conteúdo do log se não estiver ativado (nesse caso1/3
, não será avaliado), não perca a linha de chamada e pode ativar também é fácil (se não houver vars como consts).Minha solução abrangente para desativar / substituir todas as
console.*
funções está aqui .Obviamente, certifique-se de incluí-lo após verificar o contexto necessário. Por exemplo, incluindo apenas no lançamento da produção, não está bombardeando outros componentes cruciais etc.
Citando aqui:
fonte
Se você estiver usando gulp, poderá usar este plugin:
fonte
Uma simplificação de https://stackoverflow.com/a/46189791/871166
fonte
Você poderia usar o AOP javascript (por exemplo, jquery-aop ) para interceptar todas as chamadas para console.debug / log (around) e não prosseguir com a chamada real se alguma variável global estiver definida como false.
Você pode até fazer uma chamada ajax (de vez em quando) para poder alterar o comportamento ativado / desativado do log no servidor, o que pode ser muito interessante para habilitar a depuração ao enfrentar um problema em um ambiente intermediário ou semelhante.
fonte
Você pode usar o logeek , pois permite controlar a visibilidade das mensagens de log. Aqui está como você faz isso:
Você também pode
logeek.show('nothing')
desativar totalmente todas as mensagens de log.fonte
Depois de fazer alguma pesquisa e desenvolvimento para esse problema, me deparei com esta solução que oculta avisos / erros / logs de acordo com sua escolha.
Adicione esse código antes do plug-in JQuery (por exemplo, /../jquery.min.js), mesmo que este seja um código JavaScript que não exija JQuery. Porque alguns avisos estão no próprio JQuery.
Obrigado!!
fonte
Eu escrevi uma solução ES2015 (use apenas com o Webpack ).
Descrição:
logger.disable()
- desativar todas as mensagens do consolelogger.enable()
- ativar todas as mensagens do consolelogger.log('message1', 'message2')
- funciona exatamente como console.log.logger.warn('message1', 'message2')
- funciona exatamente como console.warn.logger.error('message1', 'message2')
- funciona exatamente como console.error. Feliz codificação ..fonte