module Steep

def self.log_error(exn, message: "Unexpected error: #{exn.inspect}")

def self.log_error(exn, message: "Unexpected error: #{exn.inspect}")
  Steep.logger.error message
  exn.backtrace.each do |loc|
    Steep.logger.warn "  #{loc}"
  end
end

def self.log_output

def self.log_output
  @log_output
end

def self.log_output=(output)

def self.log_output=(output)
  @log_output = output
  prev_level = @logger&.level
  @logger = new_logger(output, prev_level)
end

def self.logger

def self.logger
  @logger
end

def self.measure(message)

def self.measure(message)
  start = Time.now
  yield.tap do
    time = Time.now - start
    self.logger.info "#{message} took #{time} seconds"
  end
end

def self.new_logger(output, prev_level)

def self.new_logger(output, prev_level)
  ActiveSupport::TaggedLogging.new(Logger.new(output)).tap do |logger|
    logger.push_tags "Steep #{VERSION}"
    logger.level = prev_level || Logger::WARN
  end
end