访问会话参数时,标记的日志记录在Rails 5中失败

时间:2018-10-12 23:35:50

标签: ruby-on-rails ruby logging

我最近将应用程序从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]正在中断

0 个答案:

没有答案