Установка¶ ↑
gem 'audited_logfile'
Далее настраиваем audited.
$ rails generate audited:install $ rake db:migrate
Возможные настройки¶ ↑
AuditedLogfile.setup do |config| config.logfile = 'log/mylogfile.log' config.skip = ['ActiveRecord::SessionStore::Session'] end
Есть возможность задать несколько Audited.current_user_method:
Audited.current_user_method = [:current_admin_user, :current_user]
По умолчанию логи пишутся в log/audit.log. Опция skip опеределяет массив имен классов, для которых логирование включено не будет.
Логирование событий по выгрузке отчетов¶ ↑
Audited.report(options)
Где options - хэш с любыми параметрами, которые используются при составлении отчета.
Пример конфига logrotate. ¶ ↑
/etc/logrotate.d/spfacilities.conf
/home/spfacilities/spfacilities/shared/log/*.log { weekly size=10M missingok notifempty nomail copytruncate }
Пример построения графика активности за последнюю неделю:¶ ↑
dashboard.html.haml
#placeholder{style: 'width: 600px; height: 250px;'} - data = Audited.week_activity_chart_data([:create, :update, :destroy], Date.today-1.week+1, Date.today) - content_for :js do :javascript $(function() { var data = [#{data.map { |day, count| "['#{localize(day)}', #{count}]" }.join(',')}]; $.plot("#placeholder", [ data ], { series: { bars: { show: true, barWidth: 0.6, align: "center" } }, xaxis: { mode: "categories", tickLength: 0 } }); });
Метод Audited.week_activity_chart_data(actions, since, till) возвращает пары [Date, Fixnum] - дата и количество записей о выбранных типах активности. аргумент actions - тип активности пользователя(сейчас в БД сохраняются действия create, update, destroy, report) since, till - экземпляры класса Date. Задают интервал для выборки.
Для примера использовалась библиотека flot (www.flotcharts.org/). Были задействованы компоненты: jquery.flot, jquery.flot.categories.