ステージングと呼ばれるアプリ用のカスタム環境があります。なんらかの理由で staging.log ファイルが作成されず、そこに書き込まれていると思われるすべてのものが代わりに nginx error.log ファイルに表示されます。不足している構成オプションはありますか?
3 に答える
これは古い質問ですが、同じ問題に遭遇したばかりで、これに遭遇した他の誰かに役立つ場合に備えて、それを修正したものを共有したいと思いました.
私の場合、rails_12factor gem を使用していました (ある時点でアプリを Heroku にデプロイしたため)。これにより、すべてのログが stdout に送られます。これにより、すべてが nginx_error.log にダンプされました。アプリに Heroku を使用しなくなったため、gem を完全に削除して修正することができましたが、Heroku の展開をサポートする必要がある場合は、そのコンテキストでのみ rails_12factor が必要になるように、何らかの構成を追加できます。
あなたが持っているnginxにログインするために:
error_log
ディレクティブについては、http://nginx.org/en/docs/ngx_core_module.html#error_logを参照してください。acces_log
ディレクティブについては、http://nginx.org/en/docs/http/ngx_http_log_module.html#access_logを参照してください。
:で1つの落とし穴がありerror_log
ます
に設定している場合debug
、nginxは--with-debug
フラグを使用してコンパイルされていませんが、デフォルトのerror.logの場所にフォールスルーします。
フラグがnginxがコンパイルされたかどうかを確認するには、nginx -V
コマンドを使用します
次のようなものを追加してみてください
c = ActiveSupport::BufferedLogger.new("log/staging.log")
c.auto_flushing = true
config.logger = c
また、 auto_flushingオプション、設定config/environments/staging.rb
に関するRailsガイド、本番環境ではオフになっているとのことですが、理由はわかりません。こちらのBufferedLoggerのドキュメントを参照してください。私には完璧な解決策のようには見えませんが、機能しているように見えます。