Files
build-emacs-for-macos/lib/output.rb

50 lines
850 B
Ruby

# frozen_string_literal: true
require 'forwardable'
require 'logger'
require_relative './errors'
module Output
extend Forwardable
def self.included(base)
base.extend(ClassMethods)
end
module ClassMethods
def logger_name(name = nil)
return @logger_name if name.nil?
@logger_name = name
end
end
def_delegators :logger, :debug, :info, :warn, :error, :fatal, :unkonwn
def err(msg = nil)
raise Error, msg
end
private
# override to set custom log level
def log_level
:info
end
def logger
@logger ||= Logger.new($stderr).tap do |l|
l.progname = self.class.logger_name
l.level = log_level
l.formatter = log_formatter
end
end
def log_formatter
proc do |severity, _datetime, progname, msg|
"==> [#{progname}] #{severity}: #{msg}\n"
end
end
end