每次 Catalina.out 收到异常时给我发邮件
Email Me Every Time Catalina.out Receives an Exception
努力寻找一个解决方案来解决必须不断访问我的服务器的痛苦,加载 catalina.out 文件,并在混乱中寻找异常。开发者用什么来不断监控tomcatcatalina.out文件,发现异常就发邮件?我也同意一些关于编写我自己的 shell 脚本来完成此操作的指导方针。如果 shell 脚本对于这类事情足够强大。
我的服务器是debian/ubuntu。我正在使用 Tomcat 7.
注意:我遇到了logwatch,但初步审查它似乎不支持 tomcat 没有自定义,而且它似乎无法嗅出 catalina.out 文件中的异常,它似乎不是实时监控的实用程序。我宁愿不要等到一天结束才了解可能发生的灾难性异常。
附加说明:我确实计划在将来实现类似 log4j 的东西,但目前我正在寻找一个更快的替代方案。不需要我更新所有异常处理代码的东西。
用 www.newrelic.com, add their monitoring to your app (which is easy for tomcat), and get their alert mechanism configured to send you email on error https://docs.newrelic.com/docs/alerts 购买一个帐户。
如果您使用的是 log4j,则可以只使用错误级别为 ERROR
的 SMTP 附加程序。有关详细信息,请参阅 the documentation。我过去曾将此与 Tomcat 一起使用,效果很好。
此外,this answer 有一个使用 SMTP appender 发送电子邮件的完整示例。
免责声明:我是 JavaMail 项目中包含的 MailHandler 的内容开发人员。
对于 java.util.logging
,您可以使用 MailHandler included with JavaMail. Download the JavaMail reference implementation jar file and modify the tomcat startup script include JavaMail in the Tomcat bootstrap ClassLoader. Then modify the logging.properties file to install the MailHandler。这是一个示例配置:
handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler, 3manager.org.apache.juli.AsyncFileHandler, 4host-manager.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler, com.sun.mail.util.logging.MailHandler
.handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler, com.sun.mail.util.logging.MailHandler
com.sun.mail.util.logging.MailHandler.subject=com.sun.mail.util.logging.CollectorFormatter
com.sun.mail.util.logging.MailHandler.level=WARNING
com.sun.mail.util.logging.MailHandler.pushLevel=WARNING
com.sun.mail.util.logging.MailHandler.pushFilter=com.sun.mail.util.logging.DurationFilter
com.sun.mail.util.logging.MailHandler.mail.host=some-smtp-host
com.sun.mail.util.logging.MailHandler.authenticator=some-password
com.sun.mail.util.logging.MailHandler.mail.from=app@server.com
#com.sun.mail.util.logging.MailHandler.mail.sender=team@list.com
com.sun.mail.util.logging.MailHandler.mail.to=devs@bugfixers.com
com.sun.mail.util.logging.MailHandler.verify=resolve
com.sun.mail.util.logging.MailHandler.mail.smtp.quitwait=false
com.sun.mail.util.logging.MailHandler.mail.smtp.connectiontimeout=45000
com.sun.mail.util.logging.MailHandler.mail.smtps.connectiontimeout=45000
com.sun.mail.util.logging.MailHandler.mail.smtp.timeout=45000
com.sun.mail.util.logging.MailHandler.mail.smtps.timeout=45000
努力寻找一个解决方案来解决必须不断访问我的服务器的痛苦,加载 catalina.out 文件,并在混乱中寻找异常。开发者用什么来不断监控tomcatcatalina.out文件,发现异常就发邮件?我也同意一些关于编写我自己的 shell 脚本来完成此操作的指导方针。如果 shell 脚本对于这类事情足够强大。
我的服务器是debian/ubuntu。我正在使用 Tomcat 7.
注意:我遇到了logwatch,但初步审查它似乎不支持 tomcat 没有自定义,而且它似乎无法嗅出 catalina.out 文件中的异常,它似乎不是实时监控的实用程序。我宁愿不要等到一天结束才了解可能发生的灾难性异常。
附加说明:我确实计划在将来实现类似 log4j 的东西,但目前我正在寻找一个更快的替代方案。不需要我更新所有异常处理代码的东西。
用 www.newrelic.com, add their monitoring to your app (which is easy for tomcat), and get their alert mechanism configured to send you email on error https://docs.newrelic.com/docs/alerts 购买一个帐户。
如果您使用的是 log4j,则可以只使用错误级别为 ERROR
的 SMTP 附加程序。有关详细信息,请参阅 the documentation。我过去曾将此与 Tomcat 一起使用,效果很好。
此外,this answer 有一个使用 SMTP appender 发送电子邮件的完整示例。
免责声明:我是 JavaMail 项目中包含的 MailHandler 的内容开发人员。
对于 java.util.logging
,您可以使用 MailHandler included with JavaMail. Download the JavaMail reference implementation jar file and modify the tomcat startup script include JavaMail in the Tomcat bootstrap ClassLoader. Then modify the logging.properties file to install the MailHandler。这是一个示例配置:
handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler, 3manager.org.apache.juli.AsyncFileHandler, 4host-manager.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler, com.sun.mail.util.logging.MailHandler
.handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler, com.sun.mail.util.logging.MailHandler
com.sun.mail.util.logging.MailHandler.subject=com.sun.mail.util.logging.CollectorFormatter
com.sun.mail.util.logging.MailHandler.level=WARNING
com.sun.mail.util.logging.MailHandler.pushLevel=WARNING
com.sun.mail.util.logging.MailHandler.pushFilter=com.sun.mail.util.logging.DurationFilter
com.sun.mail.util.logging.MailHandler.mail.host=some-smtp-host
com.sun.mail.util.logging.MailHandler.authenticator=some-password
com.sun.mail.util.logging.MailHandler.mail.from=app@server.com
#com.sun.mail.util.logging.MailHandler.mail.sender=team@list.com
com.sun.mail.util.logging.MailHandler.mail.to=devs@bugfixers.com
com.sun.mail.util.logging.MailHandler.verify=resolve
com.sun.mail.util.logging.MailHandler.mail.smtp.quitwait=false
com.sun.mail.util.logging.MailHandler.mail.smtp.connectiontimeout=45000
com.sun.mail.util.logging.MailHandler.mail.smtps.connectiontimeout=45000
com.sun.mail.util.logging.MailHandler.mail.smtp.timeout=45000
com.sun.mail.util.logging.MailHandler.mail.smtps.timeout=45000