11

あるリクエストをフォローし、次に次のリクエストをフォローできるように、適切に順序付けられたログファイルを取得したことを思い出します。

さて、私の4歳の人が言うように、ログファイルは「すべてがぎゅうぎゅう詰めになっている」と言っています。2つのリクエストからのログは、絡み合ったり混同されたりします。

例えば:

Started GET /foobar
...
Completed 200 OK in 2ms (Views: 0.4ms | ActiveRecord: 0.8ms)
Patient Load (wait, that's from another request that has nothing to do with foobar!)
[ blank space ]
Something else

1つのリクエスト内で何が起こっているのかわからないため、これは腹立たしいことです。

これはPassengerで実行されています。

4

6 に答える 6

4

他のすべてよりも本番ログの可読性を重視する場合は、

PassengerMaxInstancesPerApp 1

構成。スケーリングの問題が発生する可能性があります。または、application.rbに次のようなものを詰め込むこともできます。

process_log_filename = Rails.root + "log/#{Rails.env}-#{Process.pid}.log"
log_file = File.open(process_log_filename, 'a')
Rails.logger = ActiveSupport::BufferedLogger.new(log_file)
于 2012-09-06T10:14:39.430 に答える
4

同じ答えを検索しようとしましたが、良い情報が見つかりませんでした。サーバーまたはレールのコードを修正する必要があるかどうかわかりません。

この問題に関する詳細情報が必要な場合は、古いロギング方法を削除したコミットがあります https://github.com/rails/rails/commit/04ef93dae6d9cec616973c1110a33894ad4ba6ed

于 2012-08-29T20:48:48.370 に答える
3

うん!、彼らはいくつかの変更を加えたActiveSupport::BufferedLoggerので、ログをフラッシュするためにリクエストが終了するまで待機しなくなりました:

しかし、彼らは ActiveSupport::TaggedLogging を追加しましたこれは非常に面白く、すべてのログに任意の種類のマークを付けることができます。

あなたの場合、次のようにリクエスト UUIDをログにスタンプするとよいでしょう。

# config/application.rb
config.log_tags = [:uuid]

その後、ログがめちゃくちゃになったとしても、フォローアップしているリクエストに対応するログを追跡できます。

ログの調査に役立つこの機能を使用して、さらに面白いものを作成できます。

于 2013-01-10T17:00:46.347 に答える
3

サーバーがひどくクラッシュした場合に一部のログが失われても問題ありませんが、ログを完全に順序付けしたいと考えています。したがって、問題のコメントからのアドバイスに従って、これをアプリに適用しています。

# lib/sequential_logs.rb
module ActiveSupport
  class BufferedLogger
    def flush
      @log_dest.flush
    end
    def respond_to?(method, include_private = false)
      super
    end
  end
end

# config/initializers/sequential_logs.rb
require 'sequential_logs.rb'

Rails.logger.instance_variable_get(:@logger).instance_variable_get(:@log_dest).sync = false

これが私のアプリに影響を与えていないと言うことができる限り、それはまだ実行されており、ログは再び意味のあるものになりました.

于 2013-02-01T12:10:23.453 に答える
0

準ランダムなreqidを追加し、1つのリクエストに関してすべての行に書き込む必要があります。このようにして、混乱することはありません。

于 2012-09-06T10:49:10.450 に答える