Вход в Rails с идентификатором для каждого запроса - PullRequest
4 голосов
/ 01 августа 2011

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

В идеале любое решение не должно использовать слишком многокода регистрации по умолчанию, так как я запускаю приложение под jruby и ruby.

Ответы [ 3 ]

4 голосов
/ 22 февраля 2013

Backupify подготовил отличную статью об этом: http://blog.backupify.com/2012/06/27/contextual-logging-with-log4r-and-graylog/

Мы хотели, чтобы request_id (генерируемый rails и доступный на request.uuid присутствовал во всех сообщениях в запросе. Для того, чтобы поместить его в журнал стойки (список параметров и временные параметры среди прочих), мы добавили его в MDC в промежуточном программном обеспечении стойки.

application.rb:

config.middleware.insert_after "ActionDispatch::RequestId", "RequestIdContext"

app/controllers/request_id_context.rb: (по какой-то причине не удалось найти его в lib)

class RequestIdContext
  def initialize(app)
    @app = app
  end

  def call(env)
    Log4r::MDC.get_context.keys.each {|k| Log4r::MDC.remove(k) }
    Log4r::MDC.put("pid", Process.pid)
    Log4r::MDC.put("request_id", env["action_dispatch.request_id"])
    @app.call(env)
  end
end

Если вы помещаете задания в отложенное задание / перезапуск, поместите request_id в очередь. и в вашем работнике снимите его и установите в MDC. Затем вы можете отслеживать запросы вплоть до

1 голос
/ 14 марта 2016

Похоже, что lograge ( gem ) автоматически помещает request.uuid в ваши журналы.

У них есть этот шаблон: bfb1bf03-8e12-456e-80f9-85afaf246c7f

0 голосов
/ 18 октября 2011

Может быть, NDC функция log4r полезна для вас.

...