class StdOutErrLogger

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