Стратегии к JavaScript console.log/trace, и т.д.

Я пишу довольно большое программное обеспечение JavaScript. Я должен проследить вызовы, события журнала, действия отладки, в то время как поддерживают производительность и мобильность через браузеры.

WebKit и Firebug обе консоли предложения возражают с методами как трассировка (), журнал (), ошибка (), предупреждая (), и т.д. Они являются великими, но что я делаю, когда браузером является IE или Opera?

Предположите иметь большое приложение, Вы, конечно, хотите видеть все инициализации, которые оно делает, события, которые оно делает, и т.д., таким образом я заставляю его зарегистрировать их. Однако, если я просто зарегистрирую их, то вход не будет работать в браузерах, которым не зарегистрировали консоль в DOM. Я мог создать интерфейсный объект:

MyNamespace.Console = {};
MyNamespace.Console.log = function(value) {
 if (console!==undefined) {
  console.log(value);
 }
 else {
  // What should I do to log events on other browsers?
 }
}

Вышеупомянутое не заставляет так проблем произойти на IE / Opera, но как делают я регистрируюсь с IE (каждому действительно нужен вход с IE!).

Кроме того, если я сажаю журналы везде в моем приложении, оно замедляет меня, когда оно выполняется на продуктивной среде? У меня должны быть ОТЛАДКА переключателя вкл\выкл и простая проверка прежде, чем зарегистрировать это если ОТЛАДКА === верный, затем зарегистрироваться?

Что относительно систем как Компилятор Закрытия можно ли сделать их для удаления входа?

Чего, если существует ошибка при работе продуктивной среды и входа, не произошло, как Вы отлаживаете/находите проблему? И на самом деле, Вы когда-либо отправляете журналы ошибки JavaScript Вам (разработчик), чтобы удостовериться, что у Ваших клиентов нет проблем? Как это удается?

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

7
задан Tower 19 June 2010 в 08:08
поделиться

3 ответа

Я бы не рекомендовал возвращать данные журнала отчетов приложения обратно разработчику - по крайней мере, без предварительного раскрытия этого пользователям / клиентам.

Было бы безопаснее сначала регистрировать ошибки / события / данные отладки в массиве, как предлагает Anurag, а затем периодически отправлять данные журнала на веб-сервер, где они могут храниться локально и циклически повторяться. Затем , если у клиента возникают проблемы , они могут сами загрузить журналы для отладки и либо отправить их вам вручную, либо явно указать приложению передать журналы вам, разработчику.

В любом случае запись в консоль обычно используется во время разработки. И для этого следует использовать флаг отладки, чтобы он не был включен постоянно.

4
ответ дан 7 December 2019 в 01:16
поделиться

Вы можете просто добавить все сообщения журнала в массив или объект. Объект может выглядеть так:

var logMessages = {
    'log': [],
    'debug': [],
    'error': [],
    ...
};

где массив представляет сообщения, зарегистрированные для данного уровня, упорядоченные в хронологическом порядке или с использованием других критериев.

Вы можете просто определить идентичные интерфейсы для браузеров, в которых нет консоли, по сравнению с теми, в которых она есть. Например,

if(!window.console) {
    var console = {};

    console.log = function(msg) {
        ..
    };

    console.debug = function(msg) {
        ..
    };

    ..
}

Список сообщений может синхронизироваться с сервером, что, как я предполагаю, может быть необходимо только для ошибок и, возможно, предупреждений. Чтобы перехватывать все ошибки на странице, настройте обратный вызов на window:

window.onerror = function() {
    ..
};

и внутри обратного вызова сообщите об этом серверу. Это может не очень хорошо работать с Opera. См. javascript-global-error-handling

3
ответ дан 7 December 2019 в 01:16
поделиться

Выполните поиск в Google по запросу accord redbird console.

Redbird позволяет удаленное ведение журнала непосредственно из любого совместимого со стандартами браузера с использованием чистого JavaScript. Он не влияет на вашу веб-службу и должен работать в Safari, Firefox, Chrome, Opera, MSIE, смартфонах и т. Д.

Redbird удобен для отладки кода, который отлично работает в одном браузере, но делает что-то другое в другом. Общий способ регистрации и агрегирования сообщений в разных браузерах помогает выявить различия.

Использование флага DEBUG, как вы предложили, является хорошей идеей. Большое количество отладочных сообщений может замедлить работу в производственной среде. Другой вариант для производственной среды - заменить функцию ведения журнала нулевой функцией, то есть функцией, которая ничего не делает. Это позволяет избежать большого количества операторов if DEBUG в коде.

3
ответ дан 7 December 2019 в 01:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: