rails レスポンスヘッダーをログ出力する
devise_token_authが返すレスポンスヘッダーをログに出力したくて調べた内容をメモしておく。app/controllers/application_controller.rbのafter_actionでheadersやresponseに入っていると思ったのだが期待した値はなく。controllerのaction実行後にdevise_token_authがヘッダーにセットしているのかな...
lib/HttpLogger.rb
class HttpLogger.rb def initialize(app) @app = app end def call(env) res = @app.call(env) // リエクスト puts "%s, %s, %s" % [env["HTTP_UID"], env["HTTP_CLIENT"], env["HTTP_ACCESS_TOKEN"]] // レスポンス(HTTPステータス、ヘッダー) puts "%s, %s" % [res[0], res[1]] res end end
config/application.rb
・・・ require "./lib/httplogger" module SampleAppApi class Application < Rails::Application ・・・ config.middleware.use ::HttpLogger end end
ちなみにHttpLoggerのcallのenvには他にも以下のような情報があった
SCRIPT_NAME QUERY_STRING SERVER_PROTOCOL SERVER_SOFTWARE GATEWAY_INTERFACE REQUEST_METHOD REQUEST_PATH REQUEST_URI HTTP_VERSION HTTP_HOST HTTP_ACCEPT HTTP_COOKIE HTTP_USER_AGENT HTTP_ACCEPT_LANGUAGE HTTP_ACCEPT_ENCODING HTTP_CONNECTION SERVER_NAME SERVER_PORT PATH_INFO REMOTE_ADDR
こんな力技たぶんじゃないとできないなんてありえないと思うのでもっとちゃんとしたやり方があればご教授お願いいたします。以上です