JavaScript: как напечатать сообщение в консоль ошибок?


Как я могу напечатать сообщение в консоль ошибок, предпочтительно включая переменную?

например, что-то вроде:

print('x=%d', x);
18 421

18 ответов:

установить Firebug и тогда вы можете использовать console.log(...) и console.debug(...) и т. д. (см. документация для более).

console.error(message); //gives you the red errormessage
console.log(message); //gives the default message
console.warn(message); //gives the warn message with the exclamation mark in front of it
console.info(message); //gives an info message with an 'i' in front of the message

вы также можете добавить CSS в свои сообщения журнала:

console.log('%c My message here', "background: blue; color: black; padding-left:10px;");

исключения регистрируются в консоли JavaScript. Вы можете использовать это, если вы хотите сохранить Firebug отключено.

function log(msg) {
    setTimeout(function() {
        throw new Error(msg);
    }, 0);
}

использование:

log('Hello World');
log('another message');

один хороший способ сделать это, что работает кросс-браузер, изложенные в Отладка JavaScript: Выбросьте Свои Предупреждения!.

Если вы используете сафари можно писать

console.log("your message here");

и он появляется прямо на консоли браузера.

вот решение буквального вопроса о том, как печатать сообщение на консоль ошибок браузера, а не на консоль отладчика. (Могут быть веские причины обойти отладчик.)

Как я уже отмечал в комментариях о предложении бросить ошибку, чтобы получить сообщение в консоли ошибок, одна проблема заключается в том, что это прервет поток выполнения. Если вы не хотите прерывать поток, вы можете выбросить ошибку в отдельный поток, созданный с помощью setTimeout. Отсюда и мое решение (которое оказывается разработка по Иво Даниэлка):

var startTime = (new Date()).getTime();
function logError(msg)
{
  var milliseconds = (new Date()).getTime() - startTime;
  window.setTimeout(function () {
    throw( new Error(milliseconds + ': ' + msg, "") );
  });
}
logError('testing');

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

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

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

еще одна проблема с использованием throw заключается в том, что он может быть пойман и отброшен с помощью заключительного try-catch, а помещение броска в отдельный поток также позволяет избежать этого препятствия. Однако есть еще один способ, которым ошибка может быть поймана, а именно, если окно.обработчик onerror заменяется на тот, который делает что-то другое. Ничем не могу вам помочь.

чтобы на самом деле ответить на вопрос:

console.error('An error occurred!');
console.error('An error occurred! ', 'My variable = ', myVar);
console.error('An error occurred! ' + 'My variable = ' + myVar);

вместо ошибки можно также использовать info, log или warn.

Если вы используете Firebug и нужно поддерживать IE, Safari или Opera, а также,Firebug Lite добавляет консоли.log () поддержка этих браузеров.

примечание о 'throw ()' упоминалось выше. Кажется , что он полностью останавливает выполнение страницы (я проверил в IE8), поэтому он не очень полезен для регистрации "on going processes" (например, для отслеживания определенной переменной...)

мое предложение, возможно, добавить textarea элемент где-то в документе и изменить (или добавить) его стоимостью (что изменит его текст) для регистрации информации, когда это необходимо...

The WebKit веб-инспектор также поддерживает Firebug в консольный API (просто небольшое дополнение к Дэн).

Как всегда, Internet Explorer-это большой слон на роликах, который останавливает вас просто с помощью console.log().

журнал jQuery может быть адаптирована довольно легко, но это боль, чтобы добавить его везде. Одно из решений, если вы используете jQuery, - поместить его в свой файл jQuery в конце, сначала уменьшенный:

function log()
{
    if (arguments.length > 0)
    {
        // Join for graceful degregation
        var args = (arguments.length > 1) ? Array.prototype.join.call(arguments, " ") : arguments[0];

        // This is the standard; Firebug and newer WebKit browsers support this.
        try {
            console.log(args);
            return true;
        } catch(e) {
            // Newer Opera browsers support posting erros to their consoles.
            try {
                opera.postError(args);
                return true;
            } 
            catch(e) 
            {
            }
        }

        // Catch all; a good old alert box.
        alert(args);
        return false;
    }
}

посещение https://developer.chrome.com/devtools/docs/console-api для полной ссылки на api консоли

    console.error(object[Obj,....])\

в этом случае объектом будет ваша строка ошибки

function foo() {
  function bar() {
    console.trace("Tracing is Done here");
  }
  bar();
}

foo();

console.log(console); //to print console object
console.clear('console.clear'); //to clear console
console.log('console.log'); //to print log message
console.info('console.info'); //to print log message 
console.debug('console.debug'); //to debug message
console.warn('console.warn'); //to print Warning
console.error('console.error'); //to print Error
console.table(["car", "fruits", "color"]);//to print data in table structure
console.assert('console.assert'); //to print Error
console.dir({"name":"test"});//to print object
console.dirxml({"name":"test"});//to print object as xml formate
To Print Error:- console.error('x=%d', x);

console.log("This is the outer level");
console.group();
console.log("Level 2");
console.group();
console.log("Level 3");
console.warn("More of level 3");
console.groupEnd();
console.log("Back to level 2");
console.groupEnd();
console.log("Back to the outer level");
console.log("your message here");

работает для меня.. я ищу вот это.. я использовал Firefox. вот мой сценарий.

 $('document').ready(function() {
console.log('all images are loaded');
});

работает в Firefox и Chrome.

самый простой способ сделать это:

console.warn("Text to print on console");

с синтаксисом es6 вы можете использовать:

console.log(`x = ${x}`);

чтобы ответить на ваш вопрос, вы можете использовать возможности ES6,

var var=10;
console.log(`var=${var}`);

Это не печатает на консоль, но откроет вам всплывающее окно с вашим сообщением, которое может быть полезно для некоторой отладки:

так же:

alert("message");