Tìm kiếm một gói Node.js để xử lý đống truy tìm tương tự như cách này được thực hiện trong RoR:Làm thế nào để đăng nhập dấu vết ngăn xếp trong Node.js
Rails: Logging the entire stack trace of an exception
Tìm kiếm một gói Node.js để xử lý đống truy tìm tương tự như cách này được thực hiện trong RoR:Làm thế nào để đăng nhập dấu vết ngăn xếp trong Node.js
Rails: Logging the entire stack trace of an exception
Bạn có thể nhận được văn bản này tắt của .stack
tài sản từ bất kỳ lỗi nào. Ví dụ:
try {
throw new Error();
} catch (e) {
console.log(e.stack);
}
hoặc chỉ new
lên một lỗi nhằm mục đích nhận được stack trace
console.log(new Error().stack)
có một chức năng cho rằng: console.trace()
Trong trường hợp bạn không muốn đăng nhập vào bảng điều khiển, bạn có thể nhận được giá trị chuỗi theo dõi ngăn xếp bằng cách sử dụng new Error().stack
Tôi không có ý tưởng rằng phương pháp tồn tại .. Tôi sẽ cung cấp cho một thử! –
Ya, nhưng nếu bạn cần phải .. iono .. vượt qua nó xung quanh, hoặc làm điều gì đó với nó? Các chức năng giao diện điều khiển được gọi là "trợ giúp" chức năng cho một lý do - họ chỉ để bạn có thể thực sự lười biếng trong trường hợp cụ thể;) –
nghe có vẻ như "lớn nếu" dựa trên câu hỏi ban đầu, nhưng hãy để tôi cập nhật cho điều đó. – Benja
Kiểm tra callsite, điều này lấy sta ck đối tượng để bạn có thể sử dụng nó bất kỳ cách nào bạn thích (và như một đối tượng, chứ không phải là một chuỗi). Nó khá tuyệt vời, đẹp và đơn giản. Kiểm tra this để biết thêm thông tin về cách chơi với ngăn xếp
Có một vài logger xuất sắc cho Node.js, nhưng tôi đã tạo một trình ghi nhật ký kết quả đầu ra đơn giản, màu và theo dõi ngăn xếp ngắn gọn. Nó không ghi đè lên console.log, mà tôi thấy là tiện dụng. Nếu bạn quan tâm, bạn có thể tìm thấy nó here, node-logger.
Điều này thực sự tuyệt vời - Tôi sẽ kiểm tra. –
Việc triển khai callite phù hợp với đề xuất từ @Benja. –
Nếu bạn sử dụng winston, bạn có thể thêm này:
winston = require('winston');
logger = expandErrors(new winston.Logger());
logger.info(new Error("my error"));
// Extend a winston by making it expand errors when passed in as the
// second argument (the first argument is the log level).
function expandErrors(logger) {
var oldLogFunc = logger.log;
logger.log = function() {
var args = Array.prototype.slice.call(arguments, 0);
if (args.length >= 2 && args[1] instanceof Error) {
args[1] = args[1].stack;
}
return oldLogFunc.apply(this, args);
};
return logger;
}
và sau đó bạn sẽ có được logger với đống dấu vết winston. Cũng có trong a gist.
"Gói theo dõi ngăn xếp" trong Rails bạn đang nói đến? –
Tôi đã cập nhật câu hỏi để thêm liên kết. –
Bản sao có thể có của [Cách in dấu vết ngăn xếp trong Node.js?] (Http://stackoverflow.com/questions/2923858/how-to-print-a-stack-trace-in-node-js) –