我最近将应用程序从Rails 4更新到了5,我修改了一些中间件配置以获得更好的日志,这在rails 4上运行良好,但是在更新为rails之后,这破坏了我的应用程序,导致发送SET-COOKIE标头,如果我删除了对中间件所做的配置更改,则该应用程序可以正常工作。
现在,我需要一种方法来使标记的日志记录在Rails 5中工作,类似于在Rails 4中运行我以前版本的应用程序的方式
Rails 4 configuration changes
config.middleware.delete "ActionDispatch::Cookies"
config.middleware.delete "ActionDispatch::Session::CookieStore"
config.middleware.insert_before Rails::Rack::Logger, ActionDispatch::Cookies
config.middleware.insert_before Rails::Rack::Logger, ActionDispatch::Session::CookieStore
@offline_logging_path = "/upload/offline_logs"
config.log_tags = [
lambda {|req|
if req.path != @offline_logging_path
Time.now.strftime('%Y-%m-%d %H:%M:%S.%L')
end
},
lambda {|req|
if req.path != @offline_logging_path
'ip='+'"'+"#{req.remote_ip}"+'"'
end
},
proc { |req|
if req.path != @offline_logging_path
'id='+'"'+"#{req.session[:real_id]}"+'"'
end
},
lambda {|req|
if req.path != @offline_logging_path
'ua='+'"'+"#{req.user_agent}"+'"'
end
}
]
针对标记日志记录进行5项更改
config.log_tags = [
lambda {|req| Time.now.strftime('%Y-%m-%d %H:%M:%S.%L')},
:remote_ip,
proc { |request| request.session[:real_id] || 'No Token' },
lambda {|req| req.user_agent}
]
但是此更改不起作用,如果我删除了机架中间件更改,则request.session [:real_id]正在中断