Sha256: 754667d420966560e0be45412c464d236717d7db2c8fc442e90a3fbef5df6142

Contents?: true

Size: 1.46 KB

Versions: 1

Compression:

Stored size: 1.46 KB

Contents

$:.unshift File.dirname(__FILE__)

require 'mongodb_logger/config'
require 'mongodb_logger/logger'
require 'mongodb_logger/railtie' if defined?(Rails::Railtie)
require 'mongodb_logger/engine' if defined?(Rails::Engine)
require 'mongodb_logger/version'

module MongodbLogger
  module Base
    extend Config
    
    def self.included(base)
      base.class_eval { around_filter :enable_mongodb_logger }
    end

    def enable_mongodb_logger
      return yield unless Rails.logger.respond_to?(:mongoize)
      f_params = case
                   when request.respond_to?(:filtered_parameters) then request.filtered_parameters
                   else params
                 end
      f_session = case
                   when request.respond_to?(:session) then request.session
                   else session
                 end
      Rails.logger.mongoize({
        :method         => request.method,
        :action         => action_name,
        :controller     => controller_name,
        :path           => request.path,
        :url            => request.url,
        :params         => f_params,
        :session        => mongo_fix_session_keys(f_session),
        :ip             => request.remote_ip
      }) { yield }
    end
    # session keys can be with dots. It is invalid keys for BSON
    def mongo_fix_session_keys(session)
      new_session = {}
      session.each do |i, j|
        new_session[i.gsub(/\./i, "|")] = j.inspect
      end
      new_session
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mongodb_logger-0.4.2 lib/mongodb_logger.rb