我正在启动我的node.js服务器:
sudo NODE_ENV =生产永远开始-o out.log -e err.log server.js
有时我的错误日志会出错。
但我得到的是这样的:
Cannot read property 'length' of undefined
at eval at <anonymous> (/home/ubuntu/www/node_modules/jade/lib/jade.js:161:8)
at anonymous (eval at <anonymous> (/home/ubuntu/www/node_modules/jade/lib/jade.js:161:8))
at Object.<anonymous> (/home/ubuntu/www/node_modules/jade/lib/jade.js:166:12)
at ServerResponse._render (/home/ubuntu/www/node_modules/express/lib/view.js:422:21)
at ServerResponse.render (/home/ubuntu/www/node_modules/express/lib/view.js:315:17)
at callbacks (/home/ubuntu/www/node_modules/express/lib/router/index.js:272:11)
at Promise.<anonymous> (/home/ubuntu/www/helper/auth.js:118:11)
at Promise.<anonymous> (/home/ubuntu/www/node_modules/mongoose/lib/promise.js:120:8)
如何让错误日志显示更多信息,例如错误发生的日期时间?
答案 0 :(得分:3)
使用'uncaughtException'事件,如下所示:
process.on('uncaughtException', function (err) {
console.log('Caught exception: ' + err);
});
setTimeout(function () {
console.log('This will still run.');
}, 500);
// Intentionally cause an exception, but don't catch it.
nonexistentFunc();
console.log('This will not run.');
比您可以记录日期以及您想要在回调中注销的任何其他内容。
更多关于流程的信息: http://nodejs.org/docs/v0.4.12/api/process.html#event_uncaughtException_
答案 1 :(得分:1)
如果您需要日期时间信息,可以使用require('util').log()
如果您还想阻止您的应用程序退出,您可以捕获未捕获的异常
var util = require('util');
process.on('uncaughtException', function (err) {
//Traceout the error details
console.error(err.stack)
util.log('Caught exception: ' + err.message);
});
请记住,如果抛出异常,则可能已经运行的回调序列已停止,因此如果继续运行它,您的应用程序可能会有奇怪的行为。将process.exit()
添加到上面未捕获的异常处理程序中可能是明智的。