Я запускаю некоторые приложения Meteor в ec2 и хочу получать уведомление по электронной почте, если у пользователя возникает ошибка 500. Есть ли способ поймать все 500 ошибок и обрабатывать их в одном месте?Метеор: отправьте письмо по электронной почте, если произошла ошибка 500
ответ
Все ошибки на стороне сервера должны выводиться в журнал вашего сервера. Я запускаю приложение Meteor на экземпляре EC2, который я установил с помощью сценария в https://github.com/storyandstructure/meteorite-ec2-install, и он настраивает такие вещи, что журналы моего приложения сохраняются в /var/log/myapp.log
; ваша установка, вероятно, имеет нечто подобное.
Что касается получения электронной почты всякий раз, когда возникает ошибка, существует два варианта. Для всех ошибок, которые вызывают в результате ваш код (т. Е. Не из пакета), просто найдите, где вы поместили код throw new Meteor.Error
и добавили строку Email.send(...)
сразу после нее. (Разумеется, убедитесь, что вы добавили и настроили действительный MAIL_URL.)
Вы можете даже поймать некоторые ошибки, вызванные пакетами таким образом, если они возвратят что-либо обратно вызывающей функции; например, пакет электронной почты выдает ошибку, если функция send() не работает, что вы можете поймать в блоке try-catch
в коде, в котором вы звоните Email.send()
(а затем, гм, вы могли бы снова позвонить Email.send
, что, надеюсь, будет работать второй раз, хотя если сбой был в первый раз из-за получателя, возможно, электронное письмо на вы вместо этого сделало бы трюк).
Для ошибок, которые возникают в результате пакетов, которые не возвращают никакой обратной связи вызывающей функции, это сложнее. Вам нужно будет создать отдельное приложение, также запущенное на сервере, которое читает файл журнала сервера так часто и ищет Exception
или Error:
в начале строки. Всякий раз, когда этот текст был найден, ваше приложение для мониторинга отправляет вам электронное письмо (предположительно, также скопировав некоторые последние строки из журнала в тело письма). Это другое приложение не обязательно должно быть приложением Meteor, на самом деле, вероятно, было бы лучше, если бы это было простое приложение node.js, не слушая ни одного порта. Надеемся, что единственные пакеты, ошибки которых вы беспокоитесь, например электронная почта, все забрасывают свои ошибки в цепочку, чтобы ваша логика приложения могла их поймать и что-то сделать.
- 1. Сделать отправьте нам письмо по электронной почте
- 2. Создайте и отправьте письмо по электронной почте
- 3. отправьте письмо по электронной почте через контактную форму
- 4. Jenkins: отправьте письмо по электронной почте при сборке
- 5. отправьте электронное письмо с C# по электронной почте по электронной почте (thunderbird, Outlook)
- 6. PHP - если возникла ошибка, отправьте электронное письмо
- 7. Отправьте схему URL-адресов по электронной почте
- 8. Как загрузить адрес электронной почты plist по электронной почте отправьте
- 9. доступа отправьте по электронной почте с приложением
- 10. Excel VBA - Отправить письмо по электронной почте
- 11. Отправьте HTML-форму по электронной почте
- 12. Отправьте растровое изображение по электронной почте
- 13. отправьте полную информацию по электронной почте
- 14. Метеор: Повторно отправить ссылку по электронной почте
- 15. Monogame: отправьте электронное письмо
- 16. Не удается отправить письмо по электронной почте
- 17. Как отправить письмо по электронной почте?
- 18. C# отправить письмо по электронной почте
- 19. Пришлите электронное письмо по электронной почте
- 20. Невозможно отправить письмо по электронной почте намерение
- 21. Laravel4: как написать письмо по электронной почте
- 22. Скрипт Google Apps - отправьте pdf по электронной почте
- 23. 500 Внутренняя ошибка сервера при отправке уведомления по электронной почте
- 24. Отправьте письмо с подтверждением по электронной почте, когда пользователь зарегистрировался по API Magento
- 25. Если ошибка, то пропустите отправку по электронной почте
- 26. ASP отправьте форму по электронной почте с приложением
- 27. по электронной почте стрельба
- 28. отправьте письмо по какао-приложению
- 29. Ошибка при пересылке по электронной почте
- 30. CodeIgniter: ошибка при отправке по электронной почте
Я не думаю, что это допустимое решение. В идеале у вас будет решение для отслеживания ошибок в реальном времени, в котором ваши ошибки будут переданы на что-то вроде Elasticsearch (или электронной почты), где у вас будет больше контроля над тем, как вы их анализируете. Предполагая, что этот человек должен либо использовать файл '.log', либо вручную помещать' Email.send() 'каждый раз, когда возникает ошибка, это явно плохое решение для мужчин. Что делать, если вы интегрируете уведомления по электронной почте во все приложение (которое может быть довольно большим), а затем вдруг решите, что хотите использовать Raygun или Elasticsearch? Ты пьян. – user2205763
Вместо этого в Meteor действительно должен быть способ перехватить все ошибки, выброшенные на сервер (или клиент) и обработать их. Я пишу пакет прямо сейчас в Meteor, который переопределит метод Meteor.Error и позволит вам ввести свой собственный метод отслеживания (не мешая остальной части его поведения). – user2205763
Я не уверен, почему мой ответ оправдал нисходящее движение, тем более, что прошло более года, и никто не предложил никаких других предложений. Конечно, могут быть и должны быть другие решения, такие как идея пакета, предложенная в комментариях (инструкции и/или код, пожалуйста?), Или каким-либо образом сказать самому узлу отправлять электронные письма, когда происходит 500 ошибок; и это, вероятно, действительно будет лучшим решением. Но идеи в моем ответе действительно работают, и я фактически использовал их в производстве на EC2, как вопрос, заданный, поэтому они действительны. –