2008-09-18 3 views
9

Я хотел бы создать «универсальную» функцию регистрации отладки, которая проверяет пространство имен JS для известных журнальных библиотек.Какие инструменты ведения журнала отладки доступны из Javascript?

Например, в настоящее время он поддерживает console.log Firebug в:

var console = window['console']; 
if (console && console.log) { 
    console.log(message); 
} 

Очевидно, что это работает только в Firefox, если установлен Firebug/включен (он будет также работать в других браузерах с Firebug Lite). В принципе, я буду предоставлять JS-библиотеку, в которой я не знаю, в какую среду она будет втянута, и я хотел бы узнать, есть ли способ сообщить об отладке вывода пользователю.

Итак, возможно, что jQuery предоставляет что-то - я бы проверял, что jQuery присутствует и использует его. Или, может быть, есть известные IE-плагины, которые работают, над которыми я могу нюхать. Но это должен быть довольно устоявшийся и используемый механизм. Я не могу проверить каждую непонятную функцию журнала, которую создают люди.

Пожалуйста, только одна библиотека/технология за каждый ответ, чтобы они могли получить оценку по ходу голосования. Кроме того, использование alert() является хорошим краткосрочным решением, но ломается, если вам требуется надежное ведение журнала отладки или если блокировка выполнения является проблемой.

ответ

-1

Myself, я твердо верю в следующее:

alert('Some message/variables'); 
+0

Это хорошее временное решение, но не удается, если вы испускаете ведение журнала информационного уровня, чего обычно бывает много. Приложение быстро стало бы непригодным из-за всего предупреждения() s – levik 2008-09-18 17:55:30

+0

Ahh, я предположил, что это скорее о краткосрочном выводе информации – Teifion 2008-09-18 17:58:42

4

Firebug lite является кросс-браузер, облегченная версия Firefbug, что будет по крайней мере, дать вам console.log возможности в большинстве браузеров.

0

Что относительно Firebug Lite (для тех браузеров, которые не являются Firefox)? Я не использовал его много, кроме как при отладке кода Dojo в IE. Но он пытается как можно лучше поставить консоль Firebug в IE, Safari и Opera.

Конечно, всегда есть надежное предупреждение (err_msg); : D

1

Если вы уже используете jQuery, я могу сердечно порекомендовать плагин jQuery Debug (a.k.a., jquery.debug.js). См. http://trainofthoughts.org/blog/2007/03/16/jquery-plugin-debug/.

Этот плагин позволяет отключать или отключать отладочный журнал с помощью глобального коммутатора. Вход выглядит следующим образом:

$.log('My value is: ' + val); 

Выход отправляется console.log под Firefox и записывается в сНу блок вставлен в нижней части страницы, на других браузерах.

7

Я лично использую Firebug/Firebug Lite и IE, чтобы Visual Studio выполняла отладку. Ни одно из них не приносит пользы, когда посетитель использует какой-то безумный браузер. Вам действительно нужно, чтобы ваш javascript на стороне клиента регистрировал свои ошибки на вашем сервере. Взгляните на презентацию Power Point, с которой я связан ниже. У этого есть некоторые довольно опрятные идеи о том, как получить ваш javascript для регистрации материала на вашем сервере.

В принципе, вы зацепите window.onerror и свои блоки try {} catch() {} с функцией, которая возвращает запрос на ваш сервер с полезной информацией об отладке.

Я только что реализовал такой процесс в своем собственном веб-приложении. У меня есть каждый блок catch() {}, вызывающий функцию, которая отправляет JSON-кодированное сообщение обратно на сервер, что, в свою очередь, использует мою существующую инфраструктуру регистрации (в моем случае log4perl).Презентация, на которую я ссылаюсь, также предлагает загрузить изображение в вашем javascript, включая ошибки как часть запроса GET. Единственная проблема заключается в том, что если вы хотите включить трассировки стека (какой IE не генерирует для вас вообще), запрос будет слишком большим.

Tracking ClientSide Errors, by Eric Pascarello

PS: Я хотел бы добавить, что я не думаю, что это хорошая идея, чтобы использовать любой вид библиотеки, как JQuery для «хардкорных» лесозаготовок, потому что может быть причиной ошибки вы каротажного является jQuery или Firebug Lite! Может быть, ошибка в том, что браузер (cough IE6) сделал некоторый сумасшедший порядок загрузки и выбрасывает какую-то ошибку Null Reference, потому что было слишком глупо загружать библиотеку правильно.

В моем случае я убедился, что весь мой код журнала javascript находится в головке < > и не втянут в файл .js. Таким образом, я могу быть достаточно уверенным, что независимо от того, какие кривые шары броузер броска, хорошие шансы я могу зарегистрировать.

3

MochiKit имеет следующие функции (включены здесь с полным разрешением имен):

MochiKit.Logging.logDebug() // prefaces value with "DEBUG: " 
MochiKit.Logging.log() // prefaces value with "INFO: " 
MochiKit.Logging.logError() // prefaces value with "ERROR: " 
MochiKit.Logging.logFatal() // prefaces value with "FATAL: " 
MochiKit.Logging.logWarning() // prefaces value with "WARNING: " 

Существует много больше к MochiKit.Logging имен, чем это, но эти основы.

7

Вы можете попробовать log4javascript.

Раскрытие информации: Я написал его.

Смежные вопросы