Skip to content
Log requests in a structured format to MongoDB
Ruby HTML CSS JavaScript Batchfile Shell
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
angular
gemfiles
lib
spec
views
.gitignore
.ruby-version
.travis.yml
CHANGELOG.md
Gemfile
LICENSE.txt
README.md
Rakefile
config.ru
mongo_request_logger.gemspec

README.md

MongoRequestLogger

Log requests in a structured format to MongoDB.

Installation

Add this line to your application's Gemfile:

gem 'mongoid', '~> 4.0'
gem 'mongo_request_logger'

Usage with Rails 4

Add a logger session to your Mongoid config, config/mongoid.yml. An additional option capsize must be provided.

Example:

development:
  sessions:
    logger:
      database: your_log_db
      hosts:
        - host1:27017
        - host2:27017
        - host3:27017
      options:
        safe: false
        consistency: eventual
        capsize: 1000 # MB

Routes for log viewer

mount MongoRequestLogger::Viewer, :at => "log"

Usage with Sinatra (or other Rack-based apps)

Config file is the same as with Rails.

In config.ru:

require 'mongo_request_logger'
require './yourapp'

# Configure database details
session = Moped::Session.new(%w(127.0.0.1:27017))
session.use 'your_log_db'
session.options[:capsize] = 10 # MB

MongoRequestLogger.configure(session: session)

# Enable the middleware to log the requests
use MongoRequestLogger::Rack

# Mount the log viewer in /log
run Rack::URLMap.new("/" => YourApp.new,
    "/log" => MongoRequestLogger::Viewer.new)

In a Sinatra app:

# This prevents Sinatra from using the default logger, so it uses our logger instead.
set :logging, nil

get '/' do
    logger.info "Logging from Sinatra!"
end

In other Rack-based apps:

env['rack.logger'].info "Logging from Rack!"

Ignoring paths

Often you want some requests not to be logged, for example assets files. This can be done by specifying the prefixes to be ignored:

MongoRequestLogger::Rack.ignore_prefixes << '/assets/'

Usage with Resque

Extend from MongoRequestLogger::LoggedJob, to have each job logged as if it was a request.

class MyJob
    extend MongoRequestLogger::LoggedJob

    def perform(args)
       # ...
    end
end

License

All code is under the MIT licence, see LICENSE.txt.

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request
Something went wrong with that request. Please try again.