Hi!
The problem: I need to log my user’s actions on the site ( a game) so I can Datamine it later, It is also very desirable to investigate each user individually.
My solution: (still primitive) A ruby lib that is able to accumulate some actions (in a array) and then append it to a log File. Aafter_filter @ application_controller that auto-logs every action taken. The action can set a custom warn level, and a custom message.
I made a GIST with this. link1 link2
Usage: The usage is actually automatic, but you can custom with 2 options on a Action, Example:
def create @user_session = UserSession.new(params[:user_session]) @bf_errors = 10 @bf_minutes = 10 #logger.info ">>>> #{@bfw.to_s}, #{session['create_number']}" if @bfw = brute_force_warning captcha = verify_recaptcha(:model => @user_session, :message => "Favor digite as letras que aparecem distorcidas") if (@bfw == :active && !captcha) @warn = 8 @action_obs = "#{@bf_errors} per #{ @bf_minutes} minutes. Email:#{@user_session.try( :email)}, pass: #{@user_session.try( :password)}. " render :action => "login" return true end end
Discussion: I chose JSON for being very extremely easy to parse on JavaScript, which has great Libs for data visualization.
I considered the rails Buffered Logger, Beanstalk and direct File Write, but I believe the method I’m using is way faster than those. My assumption is because all I do is native to Ruby, with minimal memory use, and disc access.
TODO:
. A plugin that handles this.
. A controller-action-view to visualize this Data =)