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

Rails.logger の代わりに Hodel3000CompliantLogger を使用することが重要です。そうしないと、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 ドレイン (別の *nix ボックスの rsyslog) を設定します。

--threshold=0 を指定して oink を使用すると、すべてのエントリが表示されます

于 2013-01-23T16:40:11.060 に答える
1

Heroku サポートからの応答は次のとおりです。

「ほとんどの場合、Oink をローカルで使用するだけで、メモリ使用量の問題を理解するのに十分です。Heroku のファイルシステムは一時的であり、各 dyno には独自の分離されたファイルシステムがあるため、ファイルの書き込みとフェッチはあまり実用的ではありません。Oink を stdout またはRails ロガーのメッセージは Heroku ログに表示され、ログ ドレインまたはPapertrailのようなログ アーカイブ アドオンを使用して、それらのローカル コピーを取得できます。」

そのため、開発で使用することを提案しているようです。または、stdout に書き込んでログに記録できる場合は、それらを自分で正しい形式に排出します。

すぐに理解できなかったので、heroku-apigem を使用して、cron ジョブから数時間ごとにアプリ サーバーを自動的に再起動することになりました。これは一時的な修正として機能しました。

于 2012-12-31T06:26:56.937 に答える
-1

試す

heroku run bundle exec oink log/*
于 2012-06-18T22:05:10.673 に答える
-1

本番ログを分析するには、実行する必要があります

heroku run bundle exec oink log/production.log
于 2012-11-12T11:21:18.290 に答える