class Krane::FormattedLogger
def self.build(namespace = nil, context = nil, stream = $stderr, verbose_prefix: false)
def self.build(namespace = nil, context = nil, stream = $stderr, verbose_prefix: false) l = new(stream) l.level = level_from_env middle = if verbose_prefix if namespace.blank? raise ArgumentError, 'Must pass a namespace if logging verbosely' end if context.blank? raise ArgumentError, 'Must pass a context if logging verbosely' end "[#{context}][#{namespace}]" end l.formatter = proc do |severity, datetime, _progname, msg| colorized_line = ColorizedString.new("[#{severity}][#{datetime}]#{middle}\t#{msg}\n") case severity when "FATAL" ColorizedString.new("[#{severity}][#{datetime}]#{middle}\t").red + "#{msg}\n" when "ERROR" colorized_line.red when "WARN" colorized_line.yellow else colorized_line end end l end
def self.indent_four(str)
def self.indent_four(str) " " + str.to_s.gsub("\n", "\n ") end
def self.level_from_env
def self.level_from_env return ::Logger::DEBUG if ENV["DEBUG"] if ENV["LEVEL"] ::Logger.const_get(ENV["LEVEL"].upcase) else ::Logger::INFO end end