class StdOutErrLogger


Custom logger to direct info to stdout and warn and above to stderr

def add(severity, message = nil, progname = nil, &block)

def add(severity, message = nil, progname = nil, &block)
  message = (message || block&.call || progname) if message.nil?
  message = "- #{message.to_json}\n"
  ### message = message.join("\n") if message.is_a? Array
  out = format_message(format_severity(severity), Time.now, progname, message)
  if severity == Logger::UNKNOWN # does not follow spec, outputs to stderr for IO
    # $stderr.puts(out)
    super
  elsif severity >= Logger::WARN
    if @file
      super
    else
      $stderr.puts(out)
    end
  else
    if @file
      super
    else
      $stdout.puts(out)
    end
  end
end

def initialize(file = "#{__dir__}/../tmp/hash_delegator_next_link_state.yaml")

def initialize(file = nil)
def initialize(file = "#{__dir__}/../tmp/hash_delegator_next_link_state.yaml")
  @file = file
  super(file || STDOUT)
  self.formatter = proc do |severity, datetime, progname, msg|
    "#{msg}\n"
  end
end