Как стать автором
Обновить

MongodbLogger — складываем логи вашего Rails 3 приложения в MongoDB

Время на прочтение2 мин
Количество просмотров2.8K
image

Привет всем. Сегодня я поведаю о своей разработке для Rails 3 — MongodbLogger. Начнем по порядку.

Rails приложение по-умолчанию складывает логи запросов в папку logs. Сами по себе логи очень удобная штука — они помогают посмотреть какие запросы идут в ваше приложение, посмотреть trace ошибки и прочее. В них можно дописывать дополнительную информацию. Хотя файловый лог прост и эффективен, но у него есть определенные ограничения: при использовании множество веб-серверова, лог у каждого свой; нет простого доступа. Запись в РСУБД решает вопросы централизации и простого доступа логов, но сразу возникают другие проблемы: схема таблицы не настолько гибка, как может быть структура лога; запись может быть недостаточно быстра; чистка старых логов — задачи на Ваших плечах. И тут на помощь приходит MongoDB.



MongoDB (http://www.mongodb.org/) — документо-ориентированная система управления базами данных с открытым исходным кодом, не требующая описания схемы таблиц. Какие преимущества дает MongoDB для логирования:

  • Гибкая схема коллекций документов;
  • Асинхронная вставка данных;
  • Capped collection (самочистящиеся коллекции — www.mongodb.org/display/DOCS/Capped+Collections);
  • Достаточно быстрая запись в сравнении с файлами;
  • Индексирование и поиск;
  • Анализ данных (MapReduce);


Для использования MongoDB как логера в Rails 3, я создал специальный gem — MongodbLogger. Установка очень проста:

Добавляем в Gemfile
gem "mongodb_logger"


Добавляем в ApplicationController
include MongodbLogger::Base


создаем конфиг для MongoDB; (примеры в github.com/le0pard/mongodb_logger/blob/master/README.md и подробнее в вики — github.com/le0pard/mongodb_logger/wiki/Mongodblogger-settings)

Подключаем Веб (не обязательно), добавляем в config/routes.rb
require 'mongodb_logger/server'
mount MongodbLogger::Server.new, :at => "/mongodb"


Все готово. Теперь ваше Rails приложение будет логировать запросы в MongoDB.

Кликабельные скриншоты веба для MongodbLogger:

image

image

image

Также можно искать через Rails console.

Теперь логи не превысят указанный размер (будет происходить чистка старых записей автоматичкски), фильтровать только ошибки.

Удобство также заключается в том, что можно искать по параметрам в запросе. Например, к нам приходит из формы данные типа params[:order_id] = 12. Такие данные можно искать по логу:
collection.find({"controller" => "order", "action"=> "show", "params.order_id" => order_id})

Также можно чуть ли не создавать свой Google Analytic или Airbrake, но такая задача не стоит перед этим gem-ом :) Хотя расширения могут это и сделать.

Официальный сайт: mongodb-logger.catware.org
Исходники: github.com/le0pard/mongodb_logger

Пользуйтесь и присоединяйтесь :)
Теги:
Хабы:
Всего голосов 41: ↑40 и ↓1+39
Комментарии36

Публикации

Истории

Работа

Ruby on Rails
7 вакансий

Ближайшие события