class Krane::FormattedLogger

Public Class Methods

build(namespace = nil, context = nil, stream = $stderr, verbose_prefix: false) click to toggle source
# File lib/krane/formatted_logger.rb, line 14
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
indent_four(str) click to toggle source
# File lib/krane/formatted_logger.rb, line 10
def self.indent_four(str)
  "    " + str.to_s.gsub("\n", "\n    ")
end

Private Class Methods

level_from_env() click to toggle source
# File lib/krane/formatted_logger.rb, line 46
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