///|
pub impl Show for Span with output(self, logger) {
  let buf = StringBuilder::new()
  buf.write_string("Span(")
  buf.write_string(self.name)
  buf.write_string(" ")
  buf.write_string(self.span_id)
  if self.kind != Internal {
    buf.write_string(", kind=")
    buf.write_string(self.kind.to_string())
  }
  if self.active {
    buf.write_string(", active")
  } else {
    buf.write_string(", inactive")
  }
  let d = self.duration()
  if d > (0 : UInt64) {
    buf.write_string(", duration=")
    buf.write_string(d.to_string())
    buf.write_string("ns")
  }
  if !self.fields.is_empty() {
    buf.write_string(", fields=")
    buf.write_string(self.fields.length().to_string())
  }
  if self.status != Unset {
    buf.write_string(", status=")
    buf.write_string(self.status.to_string())
    if !self.status_message.is_empty() {
      buf.write_string(" msg=")
      buf.write_string(self.status_message)
    }
  }
  buf.write_string(")")
  logger.write_string(buf.to_string())
}