如何将审计跟踪记录到数据库?

时间:2012-06-06 11:36:22

标签: ruby-on-rails ruby-on-rails-3

我想编写一个日志模型和控制器,以记录用户所做的一切。我正在考虑用ip地址创建一个db表,用户调用的控制器,显示的视图和params.inspect。

有没有办法获得当前正在使用哪个控制器的变量?部署此方法的最佳方法是什么?有没有一个宝石可以做到这一切? 谢谢

1 个答案:

答案 0 :(得分:2)

如果将生产中的日志级别设置为:debug,则会记录每个请求以及您需要的信息。也许,为调试生产日志编写解析器可能更容易。

如果您愿意,还可以向ApplicationController添加过滤器:

class ApplicationController
  before_filter :log_activity

  def log_activity
    if Rails.env == 'production'
      @logger ||= Logger.new("#{Rails.root}/log/activity.log")
      values = [
        request.remote_ip,
        controller_name,
        action_name,
        params.inspect
      ]
      @logger.info "#{values.join ' | '}"
    end
  end

  ...
end

这可能不完整,因为您希望输出更详细,但这是个主意。