本番環境のログレベルを変更する?

こんにちは!

現在、本番モードで実行されている環境でのみ発生する、いくつかの遅いクエリをデバッグしようとしています。ログレベルが本番モードでハードコードされていることに気づきました(コード参照)。直接設定する方法がありません。デバッグログでより多くの情報を見られるように、このログレベルを(少なくとも一時的に)デバッグに変更したいのですが、何か方法はありますか?

Railsコンソールを使用して実行時にログレベルを変更する、かなりハッキーな回避策を試しましたが、どのハックでもDBクエリがデバッグログに表示されるようにはなりませんでした(ただし、RailsコンソールでRails.logger.debugを使用して手動でデバッグログを実行した場合は、ハック後に表示されました)。

よろしくお願いします!

追伸:本番環境でのみ発生する問題に関する上記のコメントについて、潜在的な懸念を和らげるために、私は非常に非標準的な方法でDiscourseを使用しており、多数のカテゴリが含まれています。私が直面している問題はおそらく他のDiscourseインスタンスでは発生しないでしょう。 :slight_smile:

「いいね!」 3

最近これが私を悩ませています。

image

ログレベルがinfoになっていることを確認しましたが、いくら以下を実行しても:

Rails.logger.info "blah blah blah"

表示されず、/errors は頑なに warn に留まっています。何を見落としているのでしょうか?

これに対する解決策を持っている人はいますか?

とてもイライラします

image

…なのに、/logsでInfoレベルのログが見えません!

「info」を切り替えても何も起こりません:

これなしで、本番環境でのみ発生する特定の問題をどのように診断すればよいのかわかりません… :sweat_smile:

Infoレベルのログをブロックしているものは何ですか?

試したこと:\n\n* production.log を確認しましたが、欲しい情報ログは そこにあります!\n* Rails コンソールで Logster.config の出力を確認しましたが、特に役立つ情報はありませんでした。\n* /vendor/bundle/ruby/3.2.0/gems/logster-2.19.1/lib/logster/configuration.rb も同様です。\n\nそのため、なぜ info レベルのログが /logs に表示されないのか、まだわかりません。\n\n明らかに、production.log と Logster の間で、info レベルのログをフィルタリングしているものがあります。\n\nCode search results · GitHub

「いいね!」 2

私の理解が正しければ、これはプロダクションモードでは設計上、info と debug を抑制しています。Blaming logster/lib/logster/rails/railtie.rb at main · discourse/logster · GitHub

store.level = Logger::Severity::WARN if Rails.env.production?

ブログ記事より

プロダクションモードでは、バックトレースをフィンガープリントすることで類似のエラーを集約し、警告/エラーおよび致命的なメッセージをリッスンします。これは、解決可能なオープンなアプリケーションの問題リストを表示することを意図しています。

開発モードでは、Rails によって生成されたすべてのログ(debug 以上)のフルファイアホースを提供します。これはコンソールよりも大きな利点があり、すべてのログ行に対して適切なバックトレースにアクセスできます。

「いいね!」 2

ありがとうございます。

メインストリームの場合は理にかなっています。

しかし、それは不当に制限的であり、特別な状況に合わせて設定可能であるべきではないでしょうか?

これには、調査したい本番環境のエッジケースの時間も含まれます。

「いいね!」 1