class Rack::Logjam::Logger

Public Instance Methods

log_request( env ) click to toggle source
# File lib/rack/logjam/logger.rb, line 8
      def log_request( env )
        _logger.info <<-end_info
[#{ANSI.green { 'api' }}] #{ANSI.cyan { '--- Request Env ---' }}
#{ANSI.magenta { JSON.pretty_generate( request_log_data( env )) }}
[#{ANSI.green { 'api' }}] #{ANSI.cyan { '--- Request Body ---' }}
#{ANSI.cyan { formatted_request_body( env ) }}
end_info
      end
log_response( env, status, headers, response ) click to toggle source
# File lib/rack/logjam/logger.rb, line 17
      def log_response( env, status, headers, response )
        _logger.info <<-end_info
[#{ANSI.green { 'api' }}] #{ANSI.cyan { '--- Response ---' }}
Status: #{status}
Headers: #{headers.inspect}
Body:
#{ANSI.cyan { format_body( (response.body rescue response), accept( env ), env ) }}
        end_info
      end

Protected Instance Methods

_logger() click to toggle source
# File lib/rack/logjam/logger.rb, line 88
def _logger
  ::Rack::Logjam::logger
end
accept( env ) click to toggle source
# File lib/rack/logjam/logger.rb, line 47
def accept( env )
  env['HTTP_ACCEPT']
end
content_type( env ) click to toggle source
# File lib/rack/logjam/logger.rb, line 43
def content_type( env )
  env['CONTENT_TYPE']
end
fetch_filter( format, body ) click to toggle source
# File lib/rack/logjam/logger.rb, line 71
def fetch_filter( format, body )
  klass, filters = Rack::Logjam::Filters.get( format )
  klass.new( body, filters )
end
fetch_formatter( format, body ) click to toggle source
# File lib/rack/logjam/logger.rb, line 76
def fetch_formatter( format, body )
  return Rack::Logjam::Formatters::Empty if body.nil? || body.strip.empty?
  return Rack::Logjam::Formatters::Array if body.is_a?( Array )
  Rack::Logjam::Formatters.get( format )
end
format_body( body, format, env ) click to toggle source
# File lib/rack/logjam/logger.rb, line 63
def format_body( body, format, env )
  filter = fetch_filter( format, body )
  filtered = filter.render

  formatter = fetch_formatter( format, body ).new( filtered, format )
  formatter.render
end
formatted_request_body( env ) click to toggle source
# File lib/rack/logjam/logger.rb, line 59
def formatted_request_body( env )
  format_body( rack_input_content( env ), content_type( env ), env )
end
path_info( env ) click to toggle source
# File lib/rack/logjam/logger.rb, line 51
def path_info( env )
  env['PATH_INFO']
end
query( env ) click to toggle source
# File lib/rack/logjam/logger.rb, line 55
def query( env )
  URI.unescape( env['QUERY_STRING'] )
end
rack_input_content( env ) click to toggle source
# File lib/rack/logjam/logger.rb, line 82
def rack_input_content( env )
  ( rack_input = env['rack.input'] ).read.tap do |content|
    rack_input.rewind
  end
end
request_log_data( env ) click to toggle source
# File lib/rack/logjam/logger.rb, line 29
def request_log_data( env )
  request_data = {
    content_type:   content_type( env ),
    content_length: env['CONTENT_LENGTH'],
    accept:         accept( env ),
    accept_version: env['HTTP_ACCEPT_VERSION'],
    method:         env['REQUEST_METHOD'],
    path:           path_info( env ),
    query:          query( env )
  }
  #request_data[:user_id] = current_user.id if current_user
  request_data
end