Як я можу надрукувати повідомлення на консоль помилки, бажано включаючи змінну?
Наприклад, щось на кшталт:
print('x=%d', x);
Як я можу надрукувати повідомлення на консоль помилки, бажано включаючи змінну?
Наприклад, щось на кшталт:
print('x=%d', x);
Відповіді:
Встановіть Firebug, а потім ви можете використовувати console.log(...)
і console.debug(...)
тощо (див . Документацію для отримання додаткової інформації).
console.log()
тощо повинні працювати у всіх браузерах, включаючи IE. Однак у всіх випадках вам потрібно буде відкрити вікно налагодження в той час, інакше дзвінки до console
генеруватимуть помилки.
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: white; padding-left:10px;");
console.log
ти можеш використовувати css всередині консолі: |
Винятки входять у консоль JavaScript. Ви можете використовувати це, якщо ви хочете, щоб Firebug не був відключений.
function log(msg) {
setTimeout(function() {
throw new Error(msg);
}, 0);
}
Використання:
log('Hello World');
log('another message');
throw
повинно бути загорнуте в setTimeout
?
Один хороший спосіб зробити це, що працює між браузером, викладений у налагодженні JavaScript: Викиньте свої сповіщення! .
throw()
це точно не спосіб зробити це. Ви рано чи пізно потрапите в біду. для мене це було швидше :(
Ось вирішення буквального питання про те, як надрукувати повідомлення на консолі помилки браузера, а не на консолі налагодження. (Можливо, будуть вагомі причини обходити налагоджувач.)
Як я зазначив у коментарях щодо пропозиції викинути помилку для отримання повідомлення на консолі помилок, одна проблема полягає в тому, що це перерве потік виконання. Якщо ви не хочете переривати потік, ви можете перекинути помилку в окремий потік, створений за допомогою 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');
Я включаю час у мілісекундах від часу початку, оскільки час очікування може перекрутити порядок, у якому ви можете розраховувати на перегляд повідомлень.
Другий аргумент методу Помилка - це ім'я файлу, який є порожньою рядком для запобігання виводу марного імені файлу та номера рядка. Можна отримати функцію виклику, але не простим незалежним способом браузера.
Було б добре, якби ми могли відобразити повідомлення із значком попередження чи повідомлення замість піктограми помилки, але я не можу знайти спосіб це зробити.
Ще одна проблема використання кидання полягає в тому, що його можна було б спіймати і викинути додаючим спробу-лову, а введення кидка в окрему нитку також уникне цієї перешкоди. Однак існує ще один спосіб помилки, який можна виявити, якщо обробник window.onerror замінити на той, що робить щось інше. Не можу вам там допомогти.
Справді відповісти на питання:
console.error('An error occurred!');
console.error('An error occurred! ', 'My variable = ', myVar);
console.error('An error occurred! ' + 'My variable = ' + myVar);
Замість помилки ви також можете використовувати інформацію, журнал чи попереджати.
console.error(..)
, що це нестандартна функція, і її не слід використовувати у виробництві. Що ви ставитесь до цього? Чи є якісь пропозиції для початківця програміста, що використовує console.error
vs console.log
?
console.log(...)
"нестандартним". У цьому плані console.error
він такий же стабільний console.log
.
Якщо ви використовуєте Firebug і вам також потрібно підтримувати IE, Safari або Opera, Firebug Lite додає підтримку console.log () до цих браузерів.
WebKit Web Inspector також підтримує Firebug в консолі API (лише незначна доповнення до відповіді Де ).
Примітка про "кинути ()", згадану вище. Здається, що він повністю зупиняє виконання сторінки (я перевірив в IE8), тому це не дуже корисно для входу в систему "на поточні процеси" (наприклад, відстежувати певну змінну ...)
Моя пропозиція, можливо, додати елемент текстової області десь у вашому документі та змінити (або додати до нього) його значення (яке змінило б його текст) для реєстрації інформації, коли це потрібно ...
console.log()
і throw()
т. Д. Крім того, в поведінці немає нічого поганого, throw()
як вам здається, - факт, що він зупиняє виконання, є навмисним і документально підтвердженим ( розробник. mozilla.org/en-US/docs/Web/JavaScript/Reference/… ), і це відповідає тому, як винятки кидаються / потрапляють в інші мови програмування. (Якщо ви хочете записати вміст змінної, не зупиняючи виконання, саме console.log()
для цього.)
console.log
- тому люди давали альтернативи. Про throw()
припинення виконання, звичайно, це навмисно, ніхто не сказав, що це не так. Ось чому, як правило, це не дуже вдалий спосіб увімкнути інформацію про налагодження під час виконання, чого саме хотіла ОП ...
Як завжди, 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.warn("Text to print on console");
Щоб відповісти на запитання, ви можете використовувати функції ES6,
var var=10;
console.log(`var=${var}`);
Це не надрукується на консолі, але відкриє вам сповіщення Popup із повідомленням, яке може бути корисним для налагодження:
просто роби:
alert("message");