使用Raygun对Node.js应用进行错误处理的方法
用我们的raygun4node包,能提供一种把您的Node.js错误发送给Raygun的便利办法.它可以很容仪的使用npm安装:
npminstallraygun
其能给您提供一个raygun客户端,您可以用它来配置您的APIkey,并且可以用来手动发送错误消息.但稍后你可能会说,“我不想手动地把所有的错误都发给Raygun,那样听起来像是有大量的工作要做!”如果你正用着express.js,那么用express的处理器就可以很容易解决这份担忧了.
varraygun=require('raygun'); varraygunClient=newraygun.Client().init({apiKey:'yourAPIkey'}); app.use(raygunClient.expressHandler);
在其它情况下你可能只是想用这种方式侦听没有被捕获的异常uncaughtException并发送错误消息.
varraygun=require('raygun'); varraygunClient=newraygun.Client().init({apiKey:'yourAPIkey'}); process.on('uncaughtException',function(err){ raygunClient.send(err); });
如果你打算开始这样做了,那你就必须理解其含义.但一个时间气泡一直回到事件循环的时候,这个事件将会被发出.如果你为这个事件添加了侦听器,那么默认的动作就不会再发生了.默认的动作时打印出调用栈信息并退出进程.触发这个之后如果继续的话,那么你的node进程将会处在一个没有被定义的状态中.node.js文档特别提到说你不应该使用这个东西,而它未来可能会被移除掉.建议的替代方案是使用域domains.下面所展示的就是一个小而简单的例子,你可以看到raygun客户端是怎样适配你对域的使用的.
vardomain=require('domain'); varraygun=require('raygun'); varraygunClient=newraygun.Client().init({apiKey:'yourAPIkey'}); varserver=require('http').createServer(function(req,res){ vard=domain.create(); d.on('error',function(err){ raygunClient.send(err); //cleanupandend }); d.add(req); d.add(res); d.run(function(){ //handlethereq,res }); }); server.listen(3000);
希望这会你更好的理解使用Raygun的Node.js中的错误处理.
持续清理错误!