Sha256: 3c0731dbc4642f6cd0bba5c40a0e7cd2cab5b7850bd0a1b3c603b03edb5b52ac

Contents?: true

Size: 1.13 KB

Versions: 3

Compression:

Stored size: 1.13 KB

Contents

class Rad::Logger        
  def initialize stream
    @stream = stream
  end
  
  def silence &b
    begin
      @silence = true
      b.call
    ensure
      @silence = false
    end    
  end
  
  def info obj
    !@silence && stream && stream.write(indent(obj_to_string(obj)) + "\n")
  end

  def warn obj
    !@silence && stream && stream.write(indent("WARN: " + obj_to_string(obj)) + "\n")
  end

  def error obj
    !@silence && stream && stream.write(indent("ERROR: " + obj_to_string(obj)) + "\n")
  end
  
  def debug obj
    if !@silence && stream 
      # cutting annoying BSON::ObjectId('4dec6a8d360501476d000004') stuff
      stream.write(indent(obj_to_string(obj).gsub(/BSON::ObjectId\(([a-z0-9'"]+)\)/, "\\1")) + "\n")
    end
  end

  protected
    IDENTATION = "  "
    attr_reader :stream
          
    def indent string
      IDENTATION + string.gsub("\n", "\n" + IDENTATION)
    end
    
    def obj_to_string obj
      if obj.is_a? Exception
        backtrace = (obj.backtrace && obj.backtrace.sfilter(Exception.filters)) || []
        %{\
#{obj.message}
  #{backtrace.join("\n  ")}
} 
      else
        obj.to_s
      end
    end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rad_core-0.0.16 lib/rad/environment/_logger.rb
rad_core-0.0.15 lib/rad/environment/_logger.rb
rad_core-0.0.14 lib/rad/environment/_logger.rb