Установка¶ ↑
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.