class Log3mf

l.context "examing Relations" do |l|
  l.log(:error, "a non-fatal error")
  l.log(:warning, "a warning")
  l.log(:info, "it is warm today")
end

end

Log3mf.to_json

Constants

LOG_LEVELS

Public Class Methods

context(context_description, &block) click to toggle source
# File lib/ruby3mf/log3mf.rb, line 67
def self.context(context_description, &block)
  Log3mf.instance.context(context_description, &block)
end
count_entries(*l) click to toggle source
# File lib/ruby3mf/log3mf.rb, line 110
def self.count_entries(*l)
  Log3mf.instance.count_entries(*l)
end
entries(*l) click to toggle source
# File lib/ruby3mf/log3mf.rb, line 119
def self.entries(*l)
  Log3mf.instance.entries(*l)
end
new() click to toggle source
# File lib/ruby3mf/log3mf.rb, line 43
def initialize
  @log_list = []
  @context_stack = []
  @ledger = []
  errormap_path = File.join(File.dirname(__FILE__), "errors.yml")
  @errormap = YAML.load_file(errormap_path)
end
reset_log() click to toggle source
# File lib/ruby3mf/log3mf.rb, line 56
def self.reset_log
  Log3mf.instance.reset_log
end
to_json() click to toggle source
# File lib/ruby3mf/log3mf.rb, line 132
def self.to_json
  Log3mf.instance.to_json
end

Public Instance Methods

context(context_description, &block) click to toggle source
# File lib/ruby3mf/log3mf.rb, line 60
def context (context_description, &block)
  @context_stack.push(context_description)
  retval = block.call(Log3mf.instance)
  @context_stack.pop
  retval
end
count_entries(*levels) click to toggle source
# File lib/ruby3mf/log3mf.rb, line 106
def count_entries(*levels)
  entries(*levels).count
end
entries(*levels) click to toggle source
# File lib/ruby3mf/log3mf.rb, line 114
def entries(*levels)
  return @log_list if levels.size == 0
  @log_list.select { |i| levels.include? i[:severity] }
end
log(severity, message, options = {}) click to toggle source
# File lib/ruby3mf/log3mf.rb, line 92
def log(severity, message, options = {})
  error = @errormap.fetch(message.to_s) { {"msg" => message.to_s, "page" => nil} }
  options[:page] = error["page"] unless options[:page]
  options[:spec] = error["spec"] unless options[:spec]
  entry = {id: message,
           context: "#{@context_stack.join("/")}",
           severity: severity,
           message: interpolate(error["msg"], options)}
  entry[:spec_ref] = spec_link(options[:spec], options[:page]) if (options && options[:page])
  entry[:caller] = "#{options[:filename]}:#{options[:linenumber]}" if (options && options[:filename] && options[:linenumber])
  @log_list << entry
  raise FatalError if severity == :fatal_error
end
method_missing(name, *args, &block) click to toggle source
Calls superclass method
# File lib/ruby3mf/log3mf.rb, line 71
def method_missing(name, *args, &block)
  if LOG_LEVELS.include? name.to_sym
    if [:fatal_error, :error, :debug].include? name.to_sym
      linenumber = caller_locations[0].to_s.split('/')[-1].split(':')[-2].to_s
      filename = caller_locations[0].to_s.split('/')[-1].split(':')[0].to_s
      options = {linenumber: linenumber, filename: filename}
      # Mike: do not call error or fatal_error without an entry in errors.yml
      raise "{fatal_}error called WITHOUT using error symbol from: #{filename}:#{linenumber}" if ( !(args[0].is_a? Symbol) && (name.to_sym != :debug) )

      puts "***** Log3mf.#{name} called from #{filename}:#{linenumber} *****" if $DEBUG

      options = options.merge(args[1]) if args[1]
      log(name.to_sym, args[0], options)
    else
      log(name.to_sym, *args)
    end
  else
    super
  end
end
reset_log() click to toggle source
# File lib/ruby3mf/log3mf.rb, line 51
def reset_log
  @log_list = []
  @context_stack = []
end
to_json() click to toggle source
# File lib/ruby3mf/log3mf.rb, line 128
def to_json
  @log_list.to_json
end