Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Logging Current User

Logging Current User

Lighting Talk Given at RubyConfIndia 2015

Avatar for Gaurish Sharma

Gaurish Sharma

April 05, 2015

More Decks by Gaurish Sharma

Other Decks in Technology

Transcript

  1. Tagged Logging config/initializers/logging.rb Rails.configuration.log_tags = [ proc do |req| if

    req.session["warden.user.user.key"].nil? "Anonym" else "user_id:#{req.session["warden.user.user.key"][1][0]}" end end ]
  2. [User:3803] Started GET "/businesses" for 127.0.0.1 at 2015-04-05 12:31:06 +0530

    [User:3803] Processing by BusinessesController#index as HTML [User:3803] Completed 200 OK in 548ms (Views: 505.8ms | ActiveRecord: 9.7ms)
  3. Started GET "/businesses" for 127.0.0.1 at 2015-04-04 17:17:41 +0530 User:3803

    Processing by BusinessesController#index as HTML Completed 200 OK in 834ms (Views: 527.8ms | ActiveRecord: 262.3ms)
  4. Custom Middleware def started_request_message(request) 'Started %s "%s" for %s at

    %s %s' % [ request.request_method, request.filtered_path, request.ip, Time.now.to_default_s, by_current_user(request) ] end
  5. Custom Middleware def read_signed_cookie(request) content = URI.unescape(request.cookies[“_app_session”]) key_generator = ActiveSupport::KeyGenerator.new(Rails.config.secret_key_base,

    iterations: 1000) key_generator = ActiveSupport::CachingKeyGenerator.new(key_generator) secret = key_generator.generate_key(request.env["action_dispatch.encrypted_cookie_salt"]) sign_secret = key_generator.generate_key(request.env["action_dispatch.encrypted_signed_cookie_salt"]) ActiveSupport::MessageEncryptor.new(secret, sign_secret).decrypt_and_verify(content) rescue ActiveSupport::MessageVerifier::InvalidSignature ‘’ end
  6. Custom Middleware class CurrentUserLogger < Rails::Rack::Logger protected def started_request_message(request) 'Started

    %s "%s" for %s at %s %s' % [ request.request_method, request.filtered_path, request.ip, Time.now.to_default_s, by_current_user(request) ] end private def by_current_user(request) ... end def read_signed_cookie(request) ... end end
  7. Started GET "/businesses" for 127.0.0.1 at 2015-04-04 17:17:41 +0530 Processing

    by BusinessesController#index as HTML Completed 200 OK in 834ms (Views: 527.8ms | ActiveRecord: 262.3ms)
  8. Now

  9. Started GET "/businesses" for 127.0.0.1 at 2015-04-04 17:17:41 +0530 User:3803

    Processing by BusinessesController#index as HTML Completed 200 OK in 834ms (Views: 527.8ms | ActiveRecord: 262.3ms)