Class: SpinelKit::Log

Inherits:
Object
  • Object
show all
Defined in:
lib/spinel_kit/log.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeLog

Returns a new instance of Log.



33
34
35
36
# File 'lib/spinel_kit/log.rb', line 33

def initialize
  @min_level = "info"
  @file_path = ""
end

Instance Attribute Details

#file_pathObject

Returns the value of attribute file_path.



31
32
33
# File 'lib/spinel_kit/log.rb', line 31

def file_path
  @file_path
end

#min_levelObject

Returns the value of attribute min_level.



31
32
33
# File 'lib/spinel_kit/log.rb', line 31

def min_level
  @min_level
end

Class Method Details

.level_value(name) ⇒ Object

Class-side helper so the comparison stays a pure function and spinel pins its arg type to :str cleanly via a consumer-side type-seed.



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/spinel_kit/log.rb', line 67

def self.level_value(name)
  if name == "debug"
    return 0
  end
  if name == "info"
    return 1
  end
  if name == "warn"
    return 2
  end
  if name == "error"
    return 3
  end
  # Unknown level -- treat as info so misspelled labels don't vanish
  # silently.
  1
end

Instance Method Details

#debug(msg) ⇒ Object



42
# File 'lib/spinel_kit/log.rb', line 42

def debug(msg); log("debug", msg); end

#error(msg) ⇒ Object



45
# File 'lib/spinel_kit/log.rb', line 45

def error(msg); log("error", msg); end

#format_line(level, msg) ⇒ Object



85
86
87
# File 'lib/spinel_kit/log.rb', line 85

def format_line(level, msg)
  "[" + Time.now.to_i.to_s + "] [" + level + "] " + msg
end

#info(msg) ⇒ Object



43
# File 'lib/spinel_kit/log.rb', line 43

def info(msg);  log("info",  msg); end

#log(level, msg) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/spinel_kit/log.rb', line 47

def log(level, msg)
  if !should_log?(level)
    return
  end
  line = format_line(level, msg)
  if @file_path.length > 0
    File.open(@file_path, "a") do |f|
      f.puts(line)
    end
  else
    $stderr.puts(line)
  end
end

#set_level(name) ⇒ Object



38
# File 'lib/spinel_kit/log.rb', line 38

def set_level(name); @min_level = name; end

#should_log?(level) ⇒ Boolean

Returns:

  • (Boolean)


61
62
63
# File 'lib/spinel_kit/log.rb', line 61

def should_log?(level)
  Log.level_value(level) >= Log.level_value(@min_level)
end

#to_file(path) ⇒ Object



39
# File 'lib/spinel_kit/log.rb', line 39

def to_file(path);   @file_path = path; end

#to_stderrObject



40
# File 'lib/spinel_kit/log.rb', line 40

def to_stderr;       @file_path = ""; end

#warn(msg) ⇒ Object



44
# File 'lib/spinel_kit/log.rb', line 44

def warn(msg);  log("warn",  msg); end