Самый простой способ вывода информации в консоль без ошибок в тех браузерах, где консоль не поддерживается.
console && console.log && console.log("whatever");
Ниже представленный код позволяет глобально использовать консоль в любом браузере не боясь появления ошибок в браузерах, где консоль не поддерживается.
;(function () {
    window.console = window.console || {};
    var methods = [
        'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error',
        'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log',
        'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd',
        'timeStamp', 'trace', 'warn'
      ]
    , length = methods.length
    , currentMethod;
    while (length--) {
        currentMethod = methods[length];
        if ( ! window.console[currentMethod] ) {
            window.console[currentMethod] = function () {};
        }
    }
})();
Пример дебагера с использованием консоли.
var debug = {
      enable: true
    , log: function (message) {
        if (this.enable && console && console.log) {
            console.log(message);
        }
    }
};
debug.log('Все работает!');
Пример отсылки логов на сервер для записи их в лог-файл.
var Logger = {
      url: null
    , number: 0
    , log: function (message, url, line) {
        this._sendLog(message, url, line, 'log');
    }
    , debug: function (message, url, line) {
        this._sendLog(message, url, line, 'debug');
    }
    , info: function (message, url, line) {
        this._sendLog(message, url, line, 'info');
    }
    , warn: function (message, url, line) {
        this._sendLog(message, url, line, 'warn');
    }
    , error: function (message, url, line) {
        this._sendLog(message, url, line, 'error');
    }
    , _sendLog: function (message, url, line, level) {
        this.number++;
        var text = this.number + '. ' + message + ' (file: ' + url + (line !== undefined ? ', line: ' + line : '') + ')';
        $.ajax({
              url: this.url
            , type: 'POST'
            , cache: false
            , data: {message: text, level: level}
        });
    }
};
Logger.url = '/log';
Logger.debug('Инициализация констант завершена.', 'menu.html');
window.onerror = function(message, url, line) {
    Logger.error(message, url, line);
};
Приоритет вызовов команд дебагера:
log (1) < debug (2) < info (3) < warn (4) < error (5)
 
Комментариев нет:
Отправить комментарий