15

Rails ログにさらに情報を取得しようとしています。具体的には、リクエストされた URI または現在のパラメーターが利用可能な場合です (常にそうであるとは限りません)。しかし、私はできないようです。これまでに行ったことは次のとおりです。

#config/environments/production.rb
config.logger = Logger.new(config.log_path)
config.log_level = :error
config.logger.level = Logger::ERROR

#config/environment.rb
class Logger
  def format_message(level, time, progname, msg)
    "**********************************************************************\n#{level} #{time.to_s(:db)} -- #{msg}\n"
  end  
end

したがって、メッセージをうまくカスタマイズできますが、ここで params/request 変数にアクセスできないようです。これが可能かどうかは誰にもわかりません。または、この情報を取得するためのより良い方法がある場合は? (おそらくRedisベースのものでさえありますか?)

おかげさまで、

ダン

4

3 に答える 3

29

(質問されてからずいぶん経ってからの回答ですが、次の方の参考になれば幸いです。)

私はちょうど似たようなことをしました。

1) リクエストレベルの詳細のロギングとは別に、ロガーをオーバーライドする必要があります。ロガーアウトのカスタマイズを考え出したようです。答えはここにあります: Rails ロガーのフォーマット文字列の設定

2) すべてのリクエストのリクエストとレスポンスをサービスに記録します。Rails は大量のものをヘッダーに入れることに注意してください。そのため、リクエストまたはヘッダーを直接ダンプするのはおそらく悪い考えです。また、私のアプリケーションは主に API 経由でアクセスされます。あなたが主にウェブアプリである場合、ほとんどの人がそうだと思いますが、response.body には html が含まれているため、おそらく検査したくないでしょう。

class ApplicationController < ActionController::Base 
  around_filter :global_request_logging
...
  def global_request_logging 
    http_request_header_keys = request.headers.keys.select{|header_name| header_name.match("^HTTP.*")}
    http_request_headers = request.headers.select{|header_name, header_value| http_request_header_keys.index(header_name)}
    logger.info "Received #{request.method.inspect} to #{request.url.inspect} from #{request.remote_ip.inspect}.  Processing with headers #{http_request_headers.inspect} and params #{params.inspect}"
    begin 
      yield 
    ensure 
      logger.info "Responding with #{response.status.inspect} => #{response.body.inspect}"
    end 
  end 
end
于 2011-03-05T22:40:54.357 に答える
3

これはうまくいくはずです!:) 乾杯。

logger.info({:user_agent => request.user_agent, :remote_ip => request.remote_ip}.inspect)

logger.info(params.inspect)

By the by..これはコントローラーアクションに配置する必要があります。例: createアクションに配置すると、user_agent (ブラウザー)、remote_ip (ユーザーのリモート IP) およびすべてのパラメーターもログに記録されます。

于 2010-04-19T15:38:00.793 に答える
0

リクエストクラスを見る必要があります

のように request.uri を置きます。

詳細はこちらhttp://api.rubyonrails.org/classes/ActionController/AbstractRequest.html

于 2010-04-19T13:50:46.203 に答える