LogBufferStream::LogBufferStream(outputStream* wst, size_t len) : stringStream(NEW_RESOURCE_ARRAY(char, len), len), _wst(wst) {
}

void LogBufferStream::stamp() {
if(_wst!=NULL){
    TimeStamp* stamp = _wst->get_time_stamp();
    if (!stamp->is_updated()) {
      stamp->update();
    }
    print("%.3f", stamp->seconds());
  } else {
    stringStream::stamp();
  }
}

// ============================================================================
// BufferedLoggerMark implementation
// ============================================================================


BufferedLoggerMark::BufferedLoggerMark(const char* tag, int opt, bool stp, bool crp, outputStream* st, long bufferSize) : LoggerStackObj(tag, opt, stp, crp, st), _mst(st, bufferSize), _depth(0) {
}

void BufferedLoggerMark::vout(const char*format,va_list ap){
  _mst.vprint(format, ap);
}