Есть ли способ отключить все console.log
операторы в моем коде JavaScript для тестирования?
javascript
debugging
console
Зак Берт
источник
источник
PICOLOG_LEVEL
(узел), и он очень мал. Меньше чем 900 байтов уменьшено и сжато Отказ от ответственности: я автор.console
функции. Достаточно взглянуть на stapp.space/disable-javascript-console-on-productionОтветы:
Переопределите функцию console.log в вашем скрипте.
Вот и все, больше сообщений на консоль.
РЕДАКТИРОВАТЬ:
Расширяя идею Cide. Пользовательский регистратор, который вы можете использовать для включения / выключения входа в ваш код.
Из моей консоли Firefox:
Как использовать вышеупомянутый «регистратор»? В вашем готовом событии вызовите logger.disableLogger, чтобы сообщения консоли не регистрировались. Добавьте вызовы к logger.enableLogger и logger.disableLogger внутри метода, для которого вы хотите записывать сообщения в консоль.
источник
console.log
... Почему бы просто не иметь логическое значение и условную функцию для ведения журнала?Следующее является более тщательным:
Это обнулит общие методы в консоли, если они существуют, и они могут быть вызваны без ошибок и практически без снижения производительности. В случае браузера типа IE6 без консоли будут созданы фиктивные методы для предотвращения ошибок. Конечно, в Firebug есть еще много функций, таких как трассировка, профиль, время и т. Д. Их можно добавить в список, если вы используете их в своем коде.
Вы также можете проверить, есть ли у отладчика эти специальные методы или нет (т.е. IE) и обнулить те, которые он не поддерживает:
источник
Насколько я могу судить из документации , Firebug не предоставляет никакой переменной для переключения состояния отладки. Вместо этого оберните console.log () в оболочку, которая вызывает его условно, то есть:
Чтобы не менять все существующие вызовы, вы можете использовать это вместо:
источник
Я понимаю, что это старый пост, но он по-прежнему всплывает в верхней части результатов Google, поэтому вот более элегантное решение, не относящееся к jQuery, которое работает в последних версиях Chrome, FF и IE.
источник
Ты не должен!
Не рекомендуется перезаписывать встроенные функции. Также нет гарантии, что вы подавите все выходные данные, другие библиотеки, которые вы используете, могут отменить ваши изменения, и есть другие функции, которые могут записывать в консоль;
.dir()
,.warning()
,.error()
,.debug()
,.assert()
И т.д.Как некоторые предположили, вы можете определить
DEBUG_MODE
переменную и войти условно. В зависимости от сложности и характера вашего кода, может быть хорошей идеей написать свой собственный объект / функцию регистратора, который оборачивается вокруг объекта консоли и имеет встроенную возможность. Это было бы правильное место, чтобы иметь дело с приборами .Тем не менее, для целей «тестирования» вы можете писать тесты вместо печати на консоль. Если вы не проводите никакого тестирования, и эти
console.log()
строки просто помогли написать ваш код, просто удалите их .источник
"other libraries you use may revert your changes"
: если я отключуconsole.log
в самом начале, они не смогут вернуться к старой функции. Ну, они могут переписатьconsole.log
исходный код, но почему?"it may be a good idea to write your own logger object/function that wraps around the console object"
Я делал это в прошлом, и это плохая идея. Трассировка вывода консоли относится к оболочке, а не к строке, которая ее вызывает, что затрудняет отладку.console.log('Look ma, it reaches this point');
кода, когда все остальное терпит неудачу, вы действительно можете использоватьdebugger;
инструкцию."the code is coupled to that infrastructure"
ЗЫ: код наверное, но шаблон нет. Если вы создаете общий базовый шаблон для своих страниц, где функции ведения журнала отключены, это логика, которую вы можете применять везде."the later shouldn't be browser-aware"
: хорошо, так что вы не должны использовать JS: PЯ знаю, что вы спрашивали, как отключить console.log, но это может быть тем, что вам действительно нужно. Таким образом, вам не нужно явно включать или отключать консоль. Он просто предотвращает эти надоедливые ошибки консоли для людей, у которых она не открыта или не установлена.
источник
Просто измените флаг,
DEBUG
чтобы переопределить функцию console.log. Это должно сделать свое дело.источник
function myLog(msg) { if (debug) { console.log(msg); } }
Я удивлен, что из всех этих ответов никто не совмещает:
Я бы пошел на это:
источник
После того, как я выполнил поиск этой проблемы и попробовал ее в своем приложении Cordova, я просто хочу предупредить каждого разработчика, чтобы Windows Phone не перезаписывал
потому что приложение будет зависать при запуске.
Если вам повезет, если вы разрабатываете локально, это не даст сбой, но отправка в магазин приведет к сбою приложения.
Просто перезаписать
Если вам нужно.
Это работает в моем приложении:
источник
Если вы используете IE7, консоль не будет определена. Таким образом, более дружественная к IE версия будет:
источник
Это гибрид ответов SolutionYogi и Chris S. Он содержит номера строк console.log и имя файла. Пример jsFiddle .
источник
Если вы используете Grunt, вы можете добавить задачу для удаления / комментирования операторов console.log. Поэтому console.log больше не вызывается.
https://www.npmjs.org/package/grunt-remove-logging-calls
источник
Я использовал следующее для решения этой проблемы:
Установите debug в 1, чтобы включить отладку. Затем используйте функцию logger при выводе текста отладки. Он также настроен на прием двух параметров.
Итак, вместо
использование
источник
Я использовал Уинстон Logger ранее.
В настоящее время я использую ниже более простой код из опыта:
Установите переменную окружения из cmd / командной строки (в Windows):
Или вы можете иметь переменную в своем коде, если хотите, но выше лучше.
Перезапустите cmd / командную строку или IDE / редактор как Netbeans
Иметь ниже, как код:
Теперь используйте всю консоль. * Как показано ниже:
Теперь, основываясь на ваших настройках LOG_LEVEL, сделанных в точке 1 (например,
setx LOG_LEVEL log
и перезапустите командную строку), некоторые из перечисленных выше будут напечатаны, другие не будут напечатаныНадеюсь, что это помогло.
источник
Предупреждение: бесстыдная вилка!
Вы также можете использовать что-то вроде моего объекта JsTrace, чтобы иметь модульную трассировку с возможностью «переключения» на уровне модуля, чтобы включать только то, что вы хотите видеть в данный момент.
http://jstrace.codeplex.com
(Также есть пакет NuGet, для тех, кто заботится)
Все уровни по умолчанию «ошибка», хотя вы можете отключить их. Хотя я не могу понять, почему вы НЕ хотели бы видеть ошибки
Вы можете изменить их так:
Для получения дополнительной документации ознакомьтесь с документацией
T
источник
В этом URL-адресе JavaScript я нашел более продвинутый фрагмент кода. Подсказка Bust and Disable console.log :
источник
Я разработал библиотеку для этого варианта использования: https://github.com/sunnykgupta/jsLogger
Особенности:
log
,warn
,error
,info
.Открыт для изменений и будет обновляться при появлении новых предложений.
источник
Это должно переопределить все методы window.console. Вы можете поместить его в самый верх вашего раздела сценариев, и если вы работаете с PHP-фреймворком, вы можете распечатать этот код только тогда, когда ваша прикладная среда работает, или если какой-либо флаг отладки отключен. Тогда все ваши журналы в вашем коде будут работать в средах разработки или в режиме отладки.
источник
Я написал это:
К сожалению, он не работает в строгом режиме.
Таким образом, используя,
console.fn.setEnabled = setEnabled
а затем,console.fn.setEnabled(false)
гдеfn
может быть практически любая консольная функция. Для вашего случая было бы:Я тоже написал это:
так что вам просто нужно ввести значение
FLAGS
по умолчанию (перед выполнением вышеуказанного кода), какFLAGS.LOG = false
и функция журнала будет отключена по умолчанию, и все же вы можете включить его, вызываяconsole.log.setEnabled(true)
источник
console.log.setEnabled(true)
и начать просматривать журналыvar debug = false; debug && console.log(1/3)
потому что вам не нужно оценивать содержимое журнала, если оно не включено (в этом случае1/3
не будет оцениваться), не теряйте линию вызывающего абонента и можете включить это тоже легко (если не зависит от констант).Мое комплексное решение для отключения / переопределения всех
console.*
функций здесь .Конечно, убедитесь, что вы включили его после проверки необходимого контекста. Например, только включение в производственный выпуск, это не бомбардировка каких-либо других важных компонентов и т. Д.
Цитирую это здесь:
источник
Если вы используете gulp, то вы можете использовать этот плагин:
источник
Упрощение https://stackoverflow.com/a/46189791/871166
источник
Вы можете использовать javascript AOP (например, jquery-aop ) для перехвата всех вызовов console.debug / log (вокруг) и не продолжать фактический вызов, если для некоторой глобальной переменной задано значение false.
Вы могли бы даже сделать ajax-вызов (время от времени), чтобы изменить поведение включенного / отключенного журнала на сервере, что может быть очень интересно для включения отладки при возникновении проблемы в промежуточной среде или подобной.
источник
Вы можете использовать logeek , это позволяет вам контролировать видимость ваших сообщений журнала. Вот как вы это делаете:
Вы также
logeek.show('nothing')
можете полностью отключить каждое сообщение журнала.источник
Проведя некоторые исследования и разработки для этой проблемы, я наткнулся на это решение, которое будет скрывать предупреждения / ошибки / журналы по вашему выбору.
Добавьте этот код перед плагином JQuery (например, /../jquery.min.js), даже если это код JavaScript, который не требует JQuery. Потому что некоторые предупреждения есть в самом JQuery.
Спасибо!!
источник
Я написал решение ES2015 (использовать только с Webpack ).
Описание:
logger.disable()
- отключить все консольные сообщенияlogger.enable()
- включить все сообщения консолиlogger.log('message1', 'message2')
- работает так же, как console.log.logger.warn('message1', 'message2')
- работает так же, как console.warn.logger.error('message1', 'message2')
- работает так же, как console.error. Удачного кодирования ..источник