JavaScript: Как напечатать сообщение на консоли ошибок? - PullRequest
429 голосов
/ 03 октября 2008

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

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

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

Ответы [ 18 ]

461 голосов
/ 03 октября 2008

Установите Firebug , а затем вы можете использовать console.log(...) и console.debug(...) и т. Д. (См. документацию для получения дополнительной информации).

308 голосов
/ 20 сентября 2012
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;");
85 голосов
/ 17 июня 2010

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

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

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

log('Hello World');
log('another message');
55 голосов
/ 03 октября 2008

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

15 голосов
/ 12 марта 2012

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

console.log("your message here");

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

14 голосов
/ 28 января 2011

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

Как я заметил в комментариях о предложении выдать ошибку, чтобы получить сообщение в консоли ошибок, одна проблема состоит в том, что это прервет поток выполнения. Если вы не хотите прерывать поток, вы можете выбросить ошибку в отдельный поток, созданный с помощью 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 относится к имени файла, которое здесь является пустой строкой для предотвращения вывода бесполезного имени файла и номера строки. Можно получить функцию вызывающего абонента, но не простым браузерным способом.

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

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

9 голосов
/ 26 марта 2014

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

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

Вместо ошибки вы также можете использовать информацию, журнал или предупреждение.

8 голосов
/ 03 октября 2008

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

5 голосов
/ 20 марта 2011

Как всегда, 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;
    }
}
5 голосов
/ 29 ноября 2010

Примечание о функции throw (), упомянутой выше. Кажется, что он полностью останавливает выполнение страницы (я проверил в IE8), поэтому он не очень полезен для регистрации «текущих процессов» (например, для отслеживания определенной переменной ...)

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

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