Skip to content

Embed URL

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Rails 3.2 Tagged Logger examples
# somewhere in your middleware stack...
# request.env['yourapp.someid'] = "1337"
YourApp::Application.configure do
config.log_tags = [
-> request {
request.env['yourapp.someid']
}
]
end
# [1337] Processing by ProjectsController#index as HTML
YourApp::Application.configure do
config.log_tags = ["Static"]
end
# [Static] Processing by ProjectsController#index as HTML
YourApp::Application.configure do
config.log_tags = [:uuid]
end
# [71ba53fd717c67a6677a058f4a5acdf4] Processing by ProjectsController#index as HTML
@mlangenberg

What about logging some information from the current session? I was trying to do the following. config.log_tags = [ lambda { |request| request.session[:user_id] }], but at this point request.session always seems to be an empty hash.

Does this imply that the 'session middleware' isn't called yet at this stage?

@qrush
Owner

Might be. You could always stuff that in the rack env in another middleware.

@mlangenberg

Could you give me an example for that? Because I don't fully understand it.
When the request.session is still {} at this point: https://github.com/rails/rails/blob/master/railties/lib/rails/rack/logger.rb#L32, how would another middleware be able to add something from the session to the rack env before that?

Only other option I can think of is to write a middleware like this. (which is called after the logger)

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

  def call(env)
    Rails.logger.tagged( env['rack.session']['user_id'] ) { @app.call(env) }
  end
end
@inspire22

Did you ever get this figured out? I was also hoping to add my userid from the session to my rails logs.

@danmayer

If you haven't checked it out, I found this was looking for various ways of inserting request_id and user_id, I ended up moving our app to lograge and using some custom event data. Look at the section on "You can also add a hook for own custom data"

https://github.com/roidrage/lograge

basically the flow for any variables is below

#in app config
config.lograge.custom_options = lambda do |event|
    {:name => "value", :user_id => event.payload[:user_id]}
  end

then set the custom var in application_controller.rb

  def append_info_to_payload(payload)
    super

    payload[:user] = current_user.try(:id)
  end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.