Làm cách nào tôi có thể in một thông báo đến bảng điều khiển lỗi, tốt nhất là bao gồm một biến?
Ví dụ: một cái gì đó như:
print('x=%d', x);
Làm cách nào tôi có thể in một thông báo đến bảng điều khiển lỗi, tốt nhất là bao gồm một biến?
Ví dụ: một cái gì đó như:
print('x=%d', x);
Câu trả lời:
Cài đặt Firebug và sau đó bạn có thể sử dụng console.log(...)
và console.debug(...)
vv (xem tài liệu để biết thêm).
console.log()
v.v. nên hoạt động trong tất cả các trình duyệt, kể cả IE. Tuy nhiên, trong mọi trường hợp, bạn cần mở cửa sổ gỡ lỗi tại thời điểm đó, nếu không các cuộc gọi đến console
sẽ phát sinh lỗi.
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
Bạn cũng có thể thêm CSS vào thông điệp đăng nhập của mình:
console.log('%c My message here', "background: blue; color: white; padding-left:10px;");
console.log
bạn đều có thể sử dụng css bên trong bảng điều khiển: |
Các ngoại lệ được đăng nhập vào bảng điều khiển JavaScript. Bạn có thể sử dụng nó nếu bạn muốn tắt Firebird .
function log(msg) {
setTimeout(function() {
throw new Error(msg);
}, 0);
}
Sử dụng:
log('Hello World');
log('another message');
throw
phải được bọc trong một setTimeout
?
Một cách tốt để làm điều này hoạt động trên nhiều trình duyệt được nêu trong Gỡ lỗi JavaScript: Vứt bỏ cảnh báo của bạn! .
throw()
chắc chắn không phải là cách để làm điều này sớm muộn gì bạn cũng sẽ gặp rắc rối đối với tôi thì sớm hơn :(
Đây là một giải pháp cho câu hỏi theo nghĩa đen về cách in thông báo đến bảng điều khiển lỗi của trình duyệt, không phải bảng điều khiển trình gỡ lỗi. (Có thể có lý do chính đáng để bỏ qua trình gỡ lỗi.)
Như tôi đã lưu ý trong các nhận xét về đề xuất ném lỗi để nhận thông báo trong bảng điều khiển lỗi, một vấn đề là điều này sẽ làm gián đoạn chuỗi thực thi. Nếu bạn không muốn làm gián đoạn chuỗi, bạn có thể ném lỗi vào một luồng riêng, một luồng được tạo bằng setTimeout. Do đó, giải pháp của tôi (hóa ra là một công trình của Ivo Danihelka):
var startTime = (new Date()).getTime();
function logError(msg)
{
var milliseconds = (new Date()).getTime() - startTime;
window.setTimeout(function () {
throw( new Error(milliseconds + ': ' + msg, "") );
});
}
logError('testing');
Tôi bao gồm thời gian tính bằng mili giây kể từ thời gian bắt đầu vì thời gian chờ có thể làm lệch thứ tự mà bạn có thể mong đợi để xem các tin nhắn.
Đối số thứ hai cho phương thức Error là tên tệp, đây là một chuỗi rỗng ở đây để ngăn đầu ra của tên tệp và số dòng vô dụng. Có thể có được chức năng người gọi nhưng không phải theo cách độc lập với trình duyệt đơn giản.
Sẽ thật tuyệt nếu chúng ta có thể hiển thị thông báo bằng biểu tượng cảnh báo hoặc thông báo thay vì biểu tượng lỗi, nhưng tôi không thể tìm ra cách để làm điều đó.
Một vấn đề khác khi sử dụng cú ném là nó có thể bị bắt và vứt đi bởi một cú bắt bóng kèm theo, và ném cú ném vào một sợi riêng biệt cũng tránh được chướng ngại vật đó. Tuy nhiên, vẫn có một cách khác có thể bị lỗi, đó là nếu trình xử lý window.onerror được thay thế bằng một cách làm khác đi. Không thể giúp bạn ở đó.
Để thực sự trả lời câu hỏi:
console.error('An error occurred!');
console.error('An error occurred! ', 'My variable = ', myVar);
console.error('An error occurred! ' + 'My variable = ' + myVar);
Thay vì lỗi, bạn cũng có thể sử dụng thông tin, đăng nhập hoặc cảnh báo.
console.error(..)
là một tính năng không chuẩn và không nên được sử dụng trong sản xuất. Ông nghĩ sao về điều này là gì? Bạn có bất cứ đề nghị cho một lập trình viên mới sử dụng console.error
vs console.log
?
Nếu bạn đang sử dụng Fireorms và cũng cần hỗ trợ IE, Safari hoặc Opera, Fireorms Lite sẽ hỗ trợ console.log () cho các trình duyệt này.
Các WebKit Web Inspector cũng hỗ trợ Firebug của giao diện điều khiển API (chỉ một bổ sung nhỏ để câu trả lời của Dan ).
Một lưu ý về 'throw ()' đã đề cập ở trên. Có vẻ như nó dừng hoàn toàn việc thực thi trang (tôi đã kiểm tra trong IE8), vì vậy nó không hữu ích cho việc ghi nhật ký "đang diễn ra quá trình" (như để theo dõi một biến nào đó ...)
Đề nghị của tôi có lẽ là thêm một yếu tố textarea ở đâu đó trong tài liệu của bạn và thay đổi (hoặc nối thêm) giá trị của nó (sẽ thay đổi văn bản của nó) để ghi thông tin bất cứ khi nào cần ...
console.log()
, throw()
vv Bên cạnh đó, không có gì là sai với hành vi củathrow()
bạn dường như ngụ ý - thực tế là nó dừng thi công là có chủ ý và tài liệu ( nhà phát triển. mozilla.org/en-US/docs/Web/JavaScript/Reference/ ,) và nó phù hợp với cách ngoại lệ được ném / bắt trong các ngôn ngữ lập trình khác. (Nếu bạn muốn ghi nhật ký nội dung của một biến mà không dừng thực thi, đó console.log()
là mục đích của nó.)
console.log
- vì vậy mọi người đang đưa ra giải pháp thay thế. Về throw()
việc dừng thực thi, tất nhiên đó là cố ý, không ai nói là không. Đó là lý do tại sao nó thường không phải là một cách tốt để ghi lại thông tin gỡ lỗi trong thời gian chạy, điều mà OP muốn ...
Như mọi khi, Internet Explorer là con voi lớn trong các con lăn khiến bạn chỉ cần sử dụng console.log()
.
Nhật ký của jQuery có thể được điều chỉnh khá dễ dàng, nhưng thật khó khăn khi phải thêm nó ở mọi nơi. Một giải pháp nếu bạn đang sử dụng jQuery là đặt nó vào tệp jQuery của bạn ở cuối, rút gọn trước:
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;
}
}
Truy cập https://developer.chrome.com/devtools/docs/console-api để tham khảo api giao diện điều khiển hoàn chỉnh
console.error(object[Obj,....])\
Trong trường hợp này, đối tượng sẽ là chuỗi lỗi của bạn
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");
Cách đơn giản nhất để làm điều này là:
console.warn("Text to print on console");
Để trả lời câu hỏi của bạn, bạn có thể sử dụng các tính năng ES6,
var var=10;
console.log(`var=${var}`);
Điều này không in ra Bảng điều khiển, nhưng sẽ mở cho bạn một Popup cảnh báo với thông báo của bạn có thể hữu ích cho một số gỡ lỗi:
cứ làm đi:
alert("message");