我可以让 Heroku Logs 只返回概述错误的行吗?

Posted

技术标签:

【中文标题】我可以让 Heroku Logs 只返回概述错误的行吗?【英文标题】:Can I get Heroku Logs to return only lines outlining errors? 【发布时间】:2012-01-26 07:30:05 【问题描述】:

heroku 日志是一个很好的资源,可以在出现问题时检查您的应用发生了什么。不幸的是,它们还记录了大量信息。有什么方法可以过滤日志中的错误消息吗?

【问题讨论】:

【参考方案1】:

不要忘记 --app 标志。例如

heroku 日志 --app my-live-app | grep -i 错误

我发现有用的是 -d 参数:设置日志类型,例如-d 网页 当您有工作人员在后台运行任务并且您只想查看 Web 发生了什么时,这很好。

否则我会同意@leonardoborges 所说的。 NewRelic 或类似的可以很好地工作。

【讨论】:

【参考方案2】:

用于检查 heroku 控制台中的所有日志

config.logger = Logger.new(STDOUT) config.logger.level = Logger::DEBUG

将这两行放在运行 heroku 应用程序的环境中(例如 production.rb)

如果有错误,您也可以查看详细日志。

【讨论】:

【参考方案3】:
heroku logs | grep -i error

您还可以安装 New Relic 插件,它会报告详细的错误跟踪。我也听说过关于 Loggly 的好消息。

另见heroku - how to see all the logs

【讨论】:

也许您在“heroku 日志”返回的几行中没有任何错误。您可以尝试我的答案链接中建议的“heroku 控制台”方法。 @jay 这个方法有效——试试heroku console | grep -i get,你会看到它对gets有效。申请错误 heroku logs 不跟踪日志,它只打印出一组行数。您需要添加 -t--tail 才能使此答案起作用。【参考方案4】:

试试这个:

heroku logs -t | grep 'error'

获取错误发生时的运行列表。

'error' 周围的逗号是为我做的。

【讨论】:

如果这不适合您,尤其是在链接多个 grep 时,请尝试在 grep 上添加 --line-buffered 开关。 heroku logs -t 是一个连续的流,所以 grep 可能需要这个提示。【参考方案5】:

我们管理着一个托管在 Heroku 上的高流量网站,NewRelic 和 Airbrake 的组合是一个很大的#win。

你试过这些吗?完全值得,Heroku 让将它们集成到您的应用中变得非常容易。

【讨论】:

这些看起来像我正在寻找的东西。谢谢!【参考方案6】:

我个人认为日志不是查看错误的最佳位置,并且很容易遗漏细节。我会确保我的代码向外部位置提出错误,以确保它们不会被遗漏。

有很多选项,从简单的ExceptionNotifier 到更高级的系统,例如Airbrake(我自己使用的就是这个)。

这些不仅会通知您错误,而且还会为您提供一堆您可以使用的元信息。

【讨论】:

【参考方案7】:

看看一些日志插件 - 我使用 PaperTrail 取得了很大的成功,但其他像 Loggly 和 Progstr Logging 将提供类似的服务。

本质上,您将日志输入到他们的服务中,它们提供了对您的日志执行实时搜索的能力,然后您就可以处理它 - 大多数会通过篝火、电子邮件、短信或简单的 HTTP 帖子提供某种通知进入其他应用程序来处理错误消息。

【讨论】:

以上是关于我可以让 Heroku Logs 只返回概述错误的行吗?的主要内容,如果未能解决你的问题,请参考以下文章

处理或防止错误使我在 Heroku 上的整个 node.js 应用程序崩溃

我可以让 model.save() 有一个返回值吗?

在 Heroku 上部署后 API 端点返回 500 错误

Heroku 中的 PHP 错误日志

Heroku:如何让它访问多个 .js 文件

Heroku 部署时出错。错误:RPC 失败; HTTP 504 curl 22 请求的 URL 返回错误:504