Class: Logue::Logger

Inherits:
Object
  • Object
show all
Includes:
ColorLog, LegacyLogger
Defined in:
lib/logue/logger.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from ColorLog

#add_color_method, color_method_source, #method_missing, #methods, #respond_to?, #valid_colors

Methods included from LegacyLogger

#colorize_line, #colorize_line=, #ignore_class, #ignore_file, #ignore_method, #log_class, #log_file, #log_method, #output, #output=, #set_color, #set_default_widths, #trim=

Constructor Details

#initialize(format: LocationFormat.new, level: Level::WARN, filter: Filter.new, writer: Writer.new) ⇒ Logger

Returns a new instance of Logger.



41
42
43
# File 'lib/logue/logger.rb', line 41

def initialize format: LocationFormat.new, level: Level::WARN, filter: Filter.new, writer: Writer.new
  reset format: format, level: level, filter: filter, writer: writer
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Logue::ColorLog

Instance Attribute Details

#filterObject

Returns the value of attribute filter.



38
39
40
# File 'lib/logue/logger.rb', line 38

def filter
  @filter
end

#formatObject

Returns the value of attribute format.



37
38
39
# File 'lib/logue/logger.rb', line 37

def format
  @format
end

#levelObject

Returns the value of attribute level.



36
37
38
# File 'lib/logue/logger.rb', line 36

def level
  @level
end

#writerObject

Returns the value of attribute writer.



39
40
41
# File 'lib/logue/logger.rb', line 39

def writer
  @writer
end

Instance Method Details

#debug(msg = "", obj = nil, classname: nil, &blk) ⇒ Object



88
89
90
# File 'lib/logue/logger.rb', line 88

def debug msg = "", obj = nil, classname: nil, &blk
  log msg, obj, level: Level::DEBUG, classname: classname, &blk
end

#error(msg = "", obj = nil, classname: nil, &blk) ⇒ Object



100
101
102
# File 'lib/logue/logger.rb', line 100

def error msg = "", obj = nil, classname: nil, &blk
  log msg, obj, level: Level::ERROR, classname: classname, &blk
end

#fatal(msg = "", obj = nil, classname: nil, &blk) ⇒ Object



104
105
106
# File 'lib/logue/logger.rb', line 104

def fatal msg = "", obj = nil, classname: nil, &blk
  log msg, obj, level: Level::FATAL, classname: classname, &blk
end

#info(msg = "", obj = nil, classname: nil, &blk) ⇒ Object



92
93
94
# File 'lib/logue/logger.rb', line 92

def info msg = "", obj = nil, classname: nil, &blk
  log msg, obj, level: Level::INFO, classname: classname, &blk
end

#log(msg = "", obj = nil, level: Level::DEBUG, classname: nil, &blk) ⇒ Object

Logs the given message.



113
114
115
# File 'lib/logue/logger.rb', line 113

def log msg = "", obj = nil, level: Level::DEBUG, classname: nil, &blk
  log_frames msg, obj, classname: classname, level: level, nframes: 0, &blk
end

#log_frame(frame, msg, obj, classname: nil, level: nil, &blk) ⇒ Object



134
135
136
137
138
# File 'lib/logue/logger.rb', line 134

def log_frame frame, msg, obj, classname: nil, level: nil, &blk
  if @filter.log? frame.path, classname, frame.method
    print_frame frame, msg, obj, classname: classname, level: level, &blk
  end
end

#log_frames(msg, obj = nil, classname: nil, level: nil, nframes: -1,, &blk) ⇒ Object



122
123
124
125
126
127
128
129
130
131
132
# File 'lib/logue/logger.rb', line 122

def log_frames msg, obj = nil, classname: nil, level: nil, nframes: -1, &blk
  if level >= @level
    stack = Stack.new
    stack.filtered[0 .. nframes].each do |frame|
      log_frame frame, msg, obj, classname: classname, level: level, &blk
      classname = nil
      msg = ""
      obj = nil
    end
  end
end

#outfile=(f) ⇒ Object

Assigns output to a file with the given name. Returns the file; the client is responsible for closing it.



77
78
79
80
# File 'lib/logue/logger.rb', line 77

def outfile= f
  io = f.kind_of?(IO) ? f : File.new(f, "w")
  @writer.output = io
end


140
141
142
143
144
145
# File 'lib/logue/logger.rb', line 140

def print_frame frame, msg, obj, classname: nil, level: nil, &blk
  loc  = Location.new frame.path, frame.line, classname, frame.method
  line = Line.new loc, msg, obj, &blk
  lstr = line.format @format
  @writer.print lstr, level
end

#quietObject



67
68
69
# File 'lib/logue/logger.rb', line 67

def quiet
  @level >= Level::WARN
end

#quiet=(b) ⇒ Object



71
72
73
# File 'lib/logue/logger.rb', line 71

def quiet= b
  @level = b ? Level::WARN : Level::DEBUG
end

#reset(format: LocationFormat.new, level: FATAL, filter: Filter.new, writer: Writer.new) ⇒ Object



60
61
62
63
64
65
# File 'lib/logue/logger.rb', line 60

def reset format: LocationFormat.new, level: FATAL, filter: Filter.new, writer: Writer.new
  @level  = level
  @filter = filter
  @format = format
  @writer = writer
end

#set_widths(file, line, method) ⇒ Object

Creates a printf format for the given widths, for aligning output. To lead lines with zeros (e.g., “00317”) the line argument must be a string, with leading zeros, not an integer.



84
85
86
# File 'lib/logue/logger.rb', line 84

def set_widths file, line, method
  @format = LocationFormat.new file: file, line: line, method: method
end

#stack(msg = "", obj = nil, level: Level::DEBUG, classname: nil, &blk) ⇒ Object

Shows the current stack.



118
119
120
# File 'lib/logue/logger.rb', line 118

def stack msg = "", obj = nil, level: Level::DEBUG, classname: nil, &blk
  log_frames msg, obj, classname: classname, level: level, nframes: -1, &blk
end

#verboseObject



56
57
58
# File 'lib/logue/logger.rb', line 56

def verbose
  @level <= Level::DEBUG
end

#verbose=(v) ⇒ Object



45
46
47
48
49
50
51
52
53
54
# File 'lib/logue/logger.rb', line 45

def verbose= v
  @level = case v
           when TrueClass 
             Level::DEBUG
           when FalseClass 
             Level::FATAL
           when Integer
             v
           end
end

#warn(msg = "", obj = nil, classname: nil, &blk) ⇒ Object



96
97
98
# File 'lib/logue/logger.rb', line 96

def warn msg = "", obj = nil, classname: nil, &blk
  log msg, obj, level: Level::WARN, classname: classname, &blk
end

#write(msg = "", obj = nil, classname: nil, &blk) ⇒ Object



108
109
110
# File 'lib/logue/logger.rb', line 108

def write msg = "", obj = nil, classname: nil, &blk
  log msg, obj, level: Level::WARN, classname: classname, &blk
end