6

我最近开始在我的 heroku 应用程序上使用oink gem,因为我注意到一些控制器操作存在小内存泄漏。oink logs 命令在本地运行良好,但我不知道如何让它在我的生产站点上运行。

这是我正在尝试的命令:

heroku run oink /log/*

这是我production.rb文件中的一行:

config.middleware.use( Oink::Middleware, :logger => Rails.logger )

在我的本地安装中,oink 将日志存储在/log/oink.log文件中。

4

4 回答 4

2

这是答案:https ://stackoverflow.com/a/14145299/1684322

使用 Hodel3000CompliantLogger 而不是 Rails.logger 很重要,否则 oink 将无法解析日志文件。它也可以不在 config/environments/production.rb 中配置,而是在 config/initializers/oink.rb 中配置

YourApplication::Application.middleware.use( Oink::Middleware, :logger => Hodel3000CompliantLogger.new(STDOUT), :instruments => :memory)

这将使 Oink 写入默认日志文件,稍后可能会被

heroku logs -n500 --app app_name > logfile_for_oink

或者使用其他日志管理工具,比如 PaperTrail ,或者设置 syslog drain(另一个 *nix box 上的 rsyslog)。

使用带有 --threshold=0 的 oink 来显示所有条目

于 2013-01-23T16:40:11.060 回答
1

以下是 Heroku 支持的回复:

“在大多数情况下,在本地使用 Oink 足以了解内存使用问题。Heroku 的文件系统是短暂的,每个 dyno 都有自己独立的文件系统,因此写入和获取文件不是很实用。如果您可以将 Oink 配置为写入标准输出或你的 Rails 记录器它的消息应该显示在你的 Heroku 日志中,你可以使用log drain或像Papertrail这样的日志归档插件来获取它们的本地副本。"

所以听起来他们建议在开发中使用它。或者,如果您可以写入标准输出,然后将它们自己记录为正确的格式。

我无法在短时间内弄清楚,所以我最终使用heroku-apigem 从 cron 作业每隔几个小时自动重新启动应用程序服务器。这是一个临时修复。

于 2012-12-31T06:26:56.937 回答
-1

要分析您的生产日志,您需要运行

heroku run bundle exec oink log/production.log
于 2012-11-12T11:21:18.290 回答
-1

尝试

heroku run bundle exec oink log/*
于 2012-06-18T22:05:10.673 回答