class Mamiya::Logger
Attributes
color[RW]
Public Class Methods
defaults()
click to toggle source
# File lib/mamiya/logger.rb, line 12 def self.defaults return @defaults if @defaults if ENV["MAMIYA_LOG_LEVEL"] level = ::Logger::Severity.const_get(ENV["MAMIYA_LOG_LEVEL"].upcase) rescue INFO else level = INFO end @defaults = {color: nil, outputs: [STDOUT], level: level} end
new(color: self.class.defaults[:color], outputs: self.class.defaults[:outputs], level: self.class.defaults[:level])
click to toggle source
# File lib/mamiya/logger.rb, line 22 def initialize(color: self.class.defaults[:color], outputs: self.class.defaults[:outputs], level: self.class.defaults[:level]) @logdev = LogDev.new(outputs) @logger = ::Logger.new(@logdev) @logger.level = level @logger.formatter = method(:format) @color = color.nil? ? @logdev.tty? : color end
Public Instance Methods
[](progname)
click to toggle source
# File lib/mamiya/logger.rb, line 74 def [](progname) self.dup.tap do |new_logger| new_logger.instance_eval do if @logger.progname && !@logger.progname.empty? @logger.progname = "#{@logger.progname}/#{progname}" else @logger.progname = progname end end end end
add_output(*outputs)
click to toggle source
# File lib/mamiya/logger.rb, line 41 def add_output(*outputs) @logdev.add(*outputs) end
dup()
click to toggle source
# File lib/mamiya/logger.rb, line 60 def dup self.orig_dup.tap do |new_logger| new_logger.instance_eval do @logger = @logger.dup end end end
Also aliased as: orig_dup
remove_output(*outputs)
click to toggle source
# File lib/mamiya/logger.rb, line 45 def remove_output(*outputs) @logdev.remove(*outputs) end
with_additional_file(*outputs) { || ... }
click to toggle source
# File lib/mamiya/logger.rb, line 49 def with_additional_file(*outputs) @logdev.add_output(*outputs) yield ensure @logdev.remove_output(*outputs) end
with_clean_progname()
click to toggle source
# File lib/mamiya/logger.rb, line 68 def with_clean_progname self.dup.tap do |new| new.progname = nil end end
Private Instance Methods
format(severity, time, progname, msg)
click to toggle source
# File lib/mamiya/logger.rb, line 88 def format(severity, time, progname, msg) rseverity = " #{severity.rjust(5)} " if @color colored_severity = case severity when 'ANY'.freeze rseverity when 'DEBUG'.freeze Term::ANSIColor.on_black(rseverity) when 'INFO'.freeze Term::ANSIColor.on_blue(rseverity) when 'WARN'.freeze Term::ANSIColor.on_yellow(Term::ANSIColor.black(rseverity)) when 'ERROR'.freeze Term::ANSIColor.on_magenta(rseverity) when 'FATAL'.freeze Term::ANSIColor.on_red(Term::ANSIColor.white(Term::ANSIColor.bold(rseverity))) else rseverity end else colored_severity = "#{rseverity}|" end msg = "#{(progname && "[#{progname}] ")}#{msg}" if @color colored_msg = case severity when 'DEBUG'.freeze Term::ANSIColor.bright_black(msg) when 'FATAL'.freeze Term::ANSIColor.bold(msg) else msg end else colored_msg = msg end formatted_time = time.strftime('%m/%d %H:%M:%S') colored_time = @color ? Term::ANSIColor.bright_black(formatted_time) : formatted_time "#{colored_time} " \ "#{colored_severity} " \ "#{colored_msg}" \ "\n" end