class Majic::Logging::Logger

Constants

TimeFormat

Attributes

name[W]

Public Class Methods

name_width() click to toggle source
# File library/majic/logging.rb, line 56
def name_width; Logging.name_cutoff or @@names.map(&:length).max end
new(object) click to toggle source
# File library/majic/logging.rb, line 59
def initialize object
  @object = object
  @@names << name
end

Public Instance Methods

log(level, *messages) click to toggle source
# File library/majic/logging.rb, line 64
def log level, *messages
  return if not should_message? level
  
  Logging.mutex.synchronize do
    messages.each do |message|
      Logging.stream.puts format(level, message).force_encoding 'utf-8'
    end
  end
end
name() click to toggle source
# File library/majic/logging.rb, line 89
def name
  @name or default_name
end
name_self(object, name) click to toggle source
# File library/majic/logging.rb, line 80
def name_self object, name
  # FIXME: This appears not to be called when attaching to a metaclass.
  #        An investigation is in order.
  Logging.included object.metaclass
  
  object.extend Logging
  object.log.name = name
end

Protected Instance Methods

default_name() click to toggle source
# File library/majic/logging.rb, line 101
def default_name
  cutoff = Logging.name_cutoff
  
  default_name = if Module === @object
      name = @object.to_s
      name.sub! /^.+?::/, '' while name.include? '::' and name.length > cutoff
      name
    else
      @object.to_s
    end
  
  default_name.truncate! cutoff, :middle if default_name.length > cutoff
  
  default_name
end
format(level, message) click to toggle source
# File library/majic/logging.rb, line 117
def format level, message
  name = self.name.ljust(Logger.name_width) ^ :bold
  [timestamp, name, level_string(level), " #{message}"].join " "
end
level_string(level) click to toggle source
# File library/majic/logging.rb, line 130
def level_string level
  max_width = Levels.map(&:length).max
  level.to_s.capitalize.rjust(max_width) ^ LevelColors[level]
end
should_message?(level) click to toggle source
# File library/majic/logging.rb, line 122
def should_message? level
  Levels.index(level) >= Logging.level_index
end
timestamp() click to toggle source
# File library/majic/logging.rb, line 126
def timestamp
  Time.now.strftime TimeFormat
end