char buffer[DEFAULT_BUFFER_SIZE_FOR_VARARGS]; \
int n; \
va_list ap; \
while (true) { \
va_start(ap, fmt); \
n = vsnprintf (&buffer[0], sizeof(buffer), fmt, ap); \
va_end(ap); \
if (n > -1 && n < sizeof(buffer)) { \
LOG_DEBUG("logging a " level " to '%s' with length %d", state_->filename_.c_str(), n); \
TSTextLogObjectWrite(state_->text_log_obj_, const_cast<char*>("[" level "] %s"), buffer); \
} else { \
LOG_ERROR("Unable to log " level " message to '%s' due to size exceeding %d bytes.", state_->filename_.c_str(), sizeof(buffer)); \
} \
return; \
}