Как я вижу весь HTTP-запрос в Rails - PullRequest
23 голосов
/ 17 мая 2010

У меня есть приложение Rails, но после некоторого времени разработки / отладки я понял, что было бы очень полезно иметь возможность видеть весь HTTP-запрос в файлах журнала - log / development.log, а не только параметры. *

Я также хочу иметь отдельный файл журнала, основанный на пользователе, а не на сессии.

Любые идеи будут оценены!

Ответы [ 4 ]

39 голосов
/ 17 мая 2010

Вы можете быстро увидеть request.env в представлении через:

  • ПРОСМОТР : <% = request.env.inspect%>

Если вместо этого вы хотите войти в журнал разработки, с вашего контроллера:

  • КОНТРОЛЛЕР : Rails.logger.info (request.env)

Здесь вы можете увидеть ссылку для объекта Request.

Rails автоматически настраивает запись в файл в каталоге log /, используя Logger из стандартной библиотеки Ruby. Файл журнала будет назван в соответствии с вашей средой, например, Журнал / development.log.

Чтобы зарегистрировать сообщение от контроллера или модели, получите доступ к экземпляру регистратора Rails с помощью метода регистратора:

class YourController < ActionController::Base
  def index
    logger.info request.env
  end
end

О пользователе, что вы используете для его аутентификации?

4 голосов
/ 05 ноября 2014

Этот код 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

затем с другими config с application.rb:

config.middleware.use "Loggo"
2 голосов
/ 17 мая 2010

Вы можете использовать промежуточное программное обеспечение стойки для регистрации запросов в том виде, в котором их видит промежуточное программное обеспечение (анализируется http-сервером и преобразуется предшествующим промежуточным программным обеспечением). Вы также можете настроить свой http-сервер для регистрации полных запросов, если ваш http-сервер поддерживает такую ​​функцию.

http-сервер (веб-сервер) отвечает за прием http-запросов, их анализ и передачу структур данных на сервер приложений (например, в стойку). Сервер приложений не видит исходный запрос, но видит, что отправляет http-сервер.

0 голосов
/ 19 февраля 2015

Первоначально я использовал фрагмент кода @AlexChaffee, но с тех пор перешел на использование mitmproxy , специализированного HTTP-прокси, который записывает запросы и ответы, проходящие через него.

Это очевидно полезно только для сценариев разработки, когда вы управляете приложениями, выполняющими запросы. Возможно, вам удастся добиться аналогичных результатов с помощью обратного прокси-сервера для производственных приложений (преимущество заключается в том, что вам не нужно для этого прикасаться к самому приложению Rails), но я этого не изучал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...