lib/mudbug.rb in mudbug-0.4.6.7 vs lib/mudbug.rb in mudbug-0.4.7.1

- old
+ new

@@ -1,10 +1,13 @@ -require 'logger' require 'rest-client' require 'json' +require 'lager' class Mudbug + extend Lager + log_to $stderr, :warn + def self.version vpath = File.join(File.dirname(__FILE__), '..', 'VERSION') File.read(vpath).chomp end @@ -27,47 +30,10 @@ type: 'text/plain', proc: proc { |text| text }, }, } - def self.log_to dest=nil - case dest - when nil, 'stderr', 'STDERR' - dest = $stderr - when 'stdout', 'STDOUT' - dest = $stdout - when IO - # do nothing - when String - # assume file path, do nothing - else - raise "unable to log_to #{dest} (#{dest.class})" - end - if defined?(@@log) - l = Logger.new dest - l.formatter = @@log.formatter - l.level = @@log.level - @@log = l - else - @@log = Logger.new dest - @@log.formatter = proc { |sev, time, progname, msg| - line = "[#{time.strftime('%Y-%m-%d %H:%M:%S')}] #{sev.to_s.upcase}: " - line << "(#{progname}) " if progname - line << msg << "\n" - } - @@log.level = Logger::WARN - end - @@log - end - - def self.log_level=(sym) - log_to unless defined?(@@log) - level = Logger.const_get(sym.to_s.upcase) - raise "unknown log level #{sym}" unless level - @@log.level = level - end - # map our internal symbols to HTTP content types # assign q scores based on the parameter order # construct the right side of the Accept: header # def self.accept_header(*types) @@ -79,46 +45,44 @@ end # do stuff based on response's Content-type # def self.process(resp, accept = nil) - log_to unless defined?(@@log) + @lager.debug { "response code: #{resp.code}" } + @lager.debug { "response headers:\n" << resp.raw_headers.inspect } - @@log.debug { "response code: #{resp.code}" } - @@log.debug { "response headers:\n" << resp.raw_headers.inspect } - unless (200..299).include?(resp.code) - @@log.warn { "processing with HTTP Status Code #{resp.code}" } + @lager.warn { "processing with HTTP Status Code #{resp.code}" } end # do you even Content-type, bro? ct = resp.headers[:content_type] unless ct - @@log.warn { "abort processing -- no response Content-type" } + @lager.warn { "abort processing -- no response Content-type" } return resp.body end # warn if we got Content-type we didn't ask for ct, charset = ct.split(';').map { |s| s.strip } if accept and !accept.include?(ct) - @@log.warn { "Asked for #{accept} but got #{ct}" } + @lager.warn { "Asked for #{accept} but got #{ct}" } end # process the response for known content types CONTENT.each { |sym, hsh| return hsh[:proc].call(resp.body) if ct == hsh[:type] } - @@log.warn { "abort processing -- unrecognized Content-type: #{ct}" } + @lager.warn { "abort processing -- unrecognized Content-type: #{ct}" } return resp.body end - attr_reader :options attr_accessor :host def initialize(host, options = {}) - self.class.log_to options.delete :log_to + # note, not yet logging at instance layer + # @lager = self.class.lager @host = host @options = options accept :json, :html, :text end