No commit activity in last 3 years
No release in over 3 years
simple logger that outputs params, session, and cookies in fancy colors.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

 Project Readme

this needs tests!

Installation

gem install rack-colorized_logger

or in Gemfile:

gem 'rack-colorized_logger', :group => :development

Config

it would like a hash of keys that are Symbol or String of valid methods to call on the Rack::Request object. the method should return a Hash-like object. for customization purposes, the key can be a Proc that returns an array where the first element is the name to display, and the second is the data to display.

###default:

DEFAULT_COLORS = {
  :params =>  [:blue, :red],
  :session => [:cyan, :yellow],
  :cookies => [:green, :magenta]
}

###2 ways to customize:

  • pass block to constructor
  • set Rack::ColorizedLogger::CONFIG

Examples

###default:

require 'sinatra'
require 'rack-colorized_logger'

configure do
  use Rack::ColorizedLogger
end

###default in rails:

config/environments/development.rb:

YourRailsApp::Application.configure do |config|
  ...
  config.middleware.use Rack::ColorizedLogger
  ...
end

####NOTE differences if Rails is defined?

  • @path defaults to false
  • @assets defaults to '/assets'
  • @public defaults to ::File.join Rails.root, 'public'

###custom:

require 'sinatra'
require 'rack-colorized_logger'

configure do
  use Rack::ColorizedLogger do |logger|

    # setting the output and colors via block
    logger.colors = {

      # keep params as default
      :params => [:blue, :red],

      # parse a JSON body and log it
      lambda {|r| b = JSON.parse(r.body.read); r.body.rewind; return ['body', b] } => [:green, :magenta],

      # display all request.env that has printable values
      lambda {|r| return ['env', r.env.select {|k,v| v.is_a? String}] } => [:cyan, :yellow]

    }

    # defaults to STDOUT. can be anything that `respond_to? :puts`
    logger.out = STDERR

    # if specified, builds a map of "public" files to not engage logging on requests for.
    # some web server configurations will not hit rack for "public" files.
    logger.public = 'public'

  end
end

###custom variant (config.ru):

# default to only params and cookies
Rack::ColorizedLogger::COLORS = {
  :params =>  [:blue, :red],
  :cookies => [:green, :magenta]
}

class FooApp < Sinatra::Base
  # uses default above
  use Rack::ColorizedLogger
  get('/'){ 'foo' }
end

class BazApp < Sinatra::Base
  # only shows params
  use Rack::ColorizedLogger do |l|
    l.colors = {:params => [:blue, :red]}
    l.path = false
    l.assets = '/some/asset/path'
  end
  get('/'){ 'baz' }
end

class BarApp < Sinatra::Base
  # uses defaults above again
  use Rack::ColorizedLogger
  get('/'){ 'bar' }
end

map('/foo'){ run FooApp }
map('/baz'){ run BazApp }
map('/bar'){ run BarApp }