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
Constants
- LOG_LEVELS
- SPEC_LINKS
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
spec_link(spec, page)
click to toggle source
# File lib/ruby3mf/log3mf.rb, line 123 def spec_link(spec, page) spec = :core unless spec "#{SPEC_LINKS[spec]}#page=#{page}" end
to_json()
click to toggle source
# File lib/ruby3mf/log3mf.rb, line 128 def to_json @log_list.to_json end