def log s='', type=nil
  if type == :preprocess
    file = PREPROCESS_LOG_FILE
  else
    file = LOG_FILE
  end
  File.open(file, 'a') {|f| f.write("#{s}\n") }
end


def log_scenario_fail_info
  return if @has_logged_scenario_info
  log "========================================="
  log "Failed scenario: #{@scenario_title}"
  log "Time: #{@scenario_time}"
  log
  log '```xml' #so output can be posted directly to github comment fields
  log osm_str.strip
  log '```'
  log
  log speedprofile_str
  log
  @has_logged_scenario_info = true
end

def log_fail expected,actual,failed
  log_scenario_fail_info
  log "== "
  log "Expected: #{expected}"
  log "Got: #{actual}"
  log
  failed.each do |fail|
    log "Attempt: #{fail[:attempt]}"
    log "Query: #{fail[:query]}"
    log "Response: #{fail[:response].body}"
    log
  end
end


def log_preprocess_info
  return if @has_logged_preprocess_info
  log "=========================================", :preprocess
  log "Preprocessing data for scenario: #{@scenario_title}", :preprocess
  log "Time: #{@scenario_time}", :preprocess
  log '', :preprocess
  log "== OSM data:", :preprocess
  log '```xml', :preprocess #so output can be posted directly to github comment fields
  log osm_str, :preprocess
  log '```', :preprocess
  log '', :preprocess
  log "== Speed profile:", :preprocess
  log speedprofile_str.strip, :preprocess
  log '', :preprocess
  @has_logged_preprocess_info = true
end

def log_preprocess str
  log_preprocess_info
  log str, :preprocess
end

def log_preprocess_done
end