Class: Logue::Logger

Inherits:
LevelLogger show all
Includes:
Colorable, LegacyLogger
Defined in:
lib/logue/logger.rb

Instance Attribute Summary collapse

Attributes inherited from LevelLogger

#level

Instance Method Summary collapse

Methods included from Colorable

#method_missing, #methods, #respond_to?, #valid_colors

Methods included from Dynamic

#add_class_method, #add_color_method

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=

Methods inherited from LevelLogger

#log, #quiet=, #quiet?, #stack, #verbose, #verbose=

Constructor Details

#initialize(format: LocationFormat.new, level: Level::WARN, filter: Filter.new, writer: ElementsWriter.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: ElementsWriter.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::Colorable

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

#writerObject

Returns the value of attribute writer.



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

def writer
  @writer
end

Instance Method Details

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



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

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 = ObjectUtil::NONE, classname: nil, level: nil, nframes: -1,, &blk) ⇒ Object



65
66
67
68
69
70
71
72
73
74
# File 'lib/logue/logger.rb', line 65

def log_frames msg, obj = ObjectUtil::NONE, classname: nil, level: nil, nframes: -1, &blk
  return if level < self.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

#outfile=(f) ⇒ Object

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



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

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


82
83
84
85
86
87
88
89
90
91
92
# File 'lib/logue/logger.rb', line 82

def print_frame frame, msg, obj, classname: nil, level: nil, &blk
  location = Location.new frame.path, frame.line, classname, frame.method
  locstr = @format.format_location location
  if msg == ObjectUtil::NONE && blk
    @writer.write_block locstr, level, &blk
  elsif blk
    @writer.write_msg_blk locstr, msg, level, &blk
  else
    @writer.write_msg_obj locstr, msg, obj, level
  end
end

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



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

def reset format: LocationFormat.new, level: FATAL, filter: Filter.new, writer: Writer.new
  @filter = filter
  @format = format
  @writer = writer
  self.level = level
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.



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

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