如何在Rails中查看整个HTTP请求

aka*_*zov 23 logging ruby-on-rails

我有一个Rails应用程序,但经过一段时间的开发/调试后,我意识到能够在日志文件--log/development.log中查看整个HTTP请求非常有用,而不仅仅是参数.

我还希望有一个基于用户的单独日志文件,而不是会话.

任何想法将不胜感激!

mic*_*ino 39

您可以通过以下方式快速查看视图中的request.env:

  • VIEW:<%= request.env.inspect%>

如果您希望在控制器中将其记录在开发日志中:

  • CONTROLLER:Rails.logger.info(request.env)

在这里,您可以看到Request对象的引用.

Rails使用Ruby标准库中的Logger自动设置日志/目录中的文件记录.日志文件将根据您的环境进行命名,例如log/development.log.

要从控制器或模型记录消息,请使用logger方法访问Rails记录器实例:

class YourController < ActionController::Base
  def index
    logger.info request.env
  end
end
Run Code Online (Sandbox Code Playgroud)

关于用户,您使用什么来验证它?

  • 这将返回一个不可思议的大字符串,我无法想象是任何人都在寻找... (3认同)

Ale*_*fee 6

logger.info request.env代码在 Rails 控制器中运行良好,但要查看更原始的版本,或者如果您使用 Grape 或其他一些安装的应用程序,您必须在通过机架中间件链的过程中拦截请求......

将此代码放入您的 lib 目录中(或位于 的底部application.rb):

require 'pp'
class Loggo
  def initialize(app)
    @app = app
  end
  def call(env)
    pp env
    @app.call(env)
  end
end
Run Code Online (Sandbox Code Playgroud)

然后与其他configs 一起application.rb

config.middleware.use "Loggo"
Run Code Online (Sandbox Code Playgroud)