如何拦截Rails记录器中的信息?

时间:2012-06-04 18:54:24

标签: ruby-on-rails ruby logging

我目前正在使用Rails v2.3.5,我对语言和框架都很新。我需要做的是每次用户请求网页时捕获某些信息(用户的IP地址,访问的URL,访问的日期和时间以及页面呈现的时间)并将其存储在数据库中。

我注意到所有这些信息都包含在默认的Rails的日志文件中,但我试图避免解析日志文件来收集这些信息。我想要的是一些方法来挂钩记录器并拦截这些信息,或者可能扩展记录器并使用我的扩展版本而不是默认的Rails(ActiveSupport :: BufferedLogger)。

也许其他解决方案不需要日志?

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可能需要的是ApplicationController中的before_filter块,以执行您需要执行的任何操作。从那里,您可以创建所需的任何数据库记录。例如:

class ApplicationController < ActionController::Base
  before_filter :log_user_info

protected
  def log_user_info
    # Activate a custom logging method on a model
    UserActivity.log!(
      # ... User parameters
    )
  end
end

连接到记录器可能是一个坏主意,因为这是获取该信息的间接方式。但是,您可能需要从历史原因中提取数据。