-
-
Save qrush/2513183 to your computer and use it in GitHub Desktop.
# 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 |
Might be. You could always stuff that in the rack env in another middleware.
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
Did you ever get this figured out? I was also hoping to add my userid from the session to my rails logs.
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
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 pointrequest.session
always seems to be an empty hash.Does this imply that the 'session middleware' isn't called yet at this stage?