mirror of
https://github.com/jimeh/build-emacs-for-macos.git
synced 2026-02-19 13:06:38 +00:00
50 lines
850 B
Ruby
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
|