Meteor:如果发生500错误,则发送电子邮件

时间:2013-08-12 13:32:30

标签: logging meteor

我在ec2上运行一些Meteor应用程序,如果用户遇到500错误,希望通过电子邮件收到通知。有没有办法捕获所有500个错误并在一个地方处理它?<​​/ p>

1 个答案:

答案 0 :(得分:0)

所有服务器端错误都应该输出到您的服务器日志中。我在https://github.com/storyandstructure/meteorite-ec2-install上使用脚本安装的EC2实例上运行Meteor应用程序,并配置了我的应用程序日志保存在/var/log/myapp.log的内容;你的设置可能有类似的东西。

至于发生错误时通过电子邮件发送,有两种选择。对于因 代码而导致的所有错误(即不是来自软件包),只需找到您放置代码的位置throw new Meteor.Error并向右添加一行Email.send(...)在它之后。 (当然,请确保您已添加Email package并设置有效的MAIL_URL。)

如果它们将任何东西返回给调用函数,你甚至可以通过这种方式捕获包引起的错误;例如,如果send()函数失败,则电子邮件包会抛出错误,您可以在代码中的try-catch块内捕获Email.send()(然后,嗯,您可以调用Email.send再次,希望第二次工作;但如果第一次失败是因为收件人,可能是一封电子邮件给而不是这样做。)

对于由于没有向调用函数返回任何反馈的包而引发的错误,那就更难了。您必须创建一个单独的应用程序,它也在服务器上运行daemonized,它经常读取服务器日志文件,并在行的开头查找ExceptionError:。每当找到该文本时,您的监控应用程序就会向您发送一封电子邮件(可能还会将日志中的一些最近行复制到电子邮件正文中)。这个其他应用程序不需要是Meteor应用程序,事实上如果它是一个简单的node.js应用程序,而不是在任何端口上侦听可能会更好。希望你所担心的唯一软件包,例如电子邮件,都会将错误抛到链上,这样你的应用程序逻辑就可以抓住它们并对它们采取一些措施。