Ни один из ответов здесь не касается консольных сообщений, которые передаются по нескольким параметрам.Например, console.log("Error:", "error details")
).
Функция, которая заменяет функцию журнала по умолчанию, лучше учитывает все аргументы функции (например, с помощью объекта arguments
).Вот пример:
console.log = function() {
log.textContent += Array.prototype.slice.call(arguments).join(' ');
}
(Array.prototype.slice.call(...)
просто преобразует объект arguments
в массив, поэтому его можно легко объединить с помощью join()
.)
Когдаоригинальный журнал также должен работать:
console.log = (function (old_log, log) {
return function () {
log.textContent += Array.prototype.slice.call(arguments).join(' ');
old_log.apply(console, arguments);
};
} (console.log.bind(console), document.querySelector('#log')));
Полное решение:
var log = document.querySelector('#log');
['log','debug','info','warn','error'].forEach(function (verb) {
console[verb] = (function (method, verb, log) {
return function () {
method.apply(console, arguments);
var msg = document.createElement('div');
msg.classList.add(verb);
msg.textContent = verb + ': ' + Array.prototype.slice.call(arguments).join(' ');
log.appendChild(msg);
};
})(console[verb], verb, log);
});
(Примером структуры, которая генерирует сообщения с несколькими параметрами, является Video.js. Но естьконечно, много других.)
Редактировать: Другое использование нескольких параметров - возможности форматирования консоли (например, console.log("Status code: %d", code)
.