docs: private String createFormattedString(LogRecord logRecord, Object id, String txt) {
  
          String objId;
          WsLogRecord wsLogRecord = getWsLogRecord(logRecord);
  
          String name;
          String method = logRecord.getSourceMethodName();
          String className = logRecord.getSourceClassName();
  
          String stackTrace = getStackTrace(logRecord);
          String sym = getMarker(logRecord);
  
          StringBuilder sb = new StringBuilder(256);
  
          // Common header
          sb.append('[').append(DateFormatHelper.formatTime(logRecord.getMillis(), useIsoDateFormat)).append("] ");
          sb.append(DataFormatHelper.getThreadId());
  
          switch (traceFormat) {
              default:
              case ENHANCED:
                  objId = generateObjectId(id, true);
                  name = nonNullString(logRecord.getSourceClassName(), logRecord.getLoggerName());
  
                  sb.append(" id=").append(objId).append(' ');
                  formatFixedString(sb, name, enhancedNameLength);
                  sb.append(sym); // sym has built-in padding
                  if (method != null) {
                      sb.append(method).append(' ');
                  }
  
                  // append formatted message -- txt includes formatted args
                  sb.append(txt);
                  if (stackTrace != null)
                      sb.append(LoggingConstants.nl).append(stackTrace);
                  break;
              case BASIC:
                  name = nonNullString(logRecord.getLoggerName(), logRecord.getSourceClassName());
  
                  sb.append(' '); // pad after thread id
                  fixedClassString(sb, name, basicNameLength);
                  sb.append(sym);
  
                  if (className != null)
                      sb.append(className);
                  sb.append(' '); // yes, this space is always there.
  
                  if (method != null)
                      sb.append(method);
                  sb.append(' '); // yes, this space is always there.
  
                  // append formatted message -- includes formatted args
                  sb.append(txt);
                  if (stackTrace != null)
                      sb.append(nlBasicPadding).append(stackTrace);
                  break;
              case ADVANCED:
                  objId = generateObjectId(id, false);
                  name = nonNullString(logRecord.getLoggerName(), null);
  
                  sb.append(' '); // pad after thread id
                  sb.append(sym);
  
                  // next append the correlation id.
                  sb.append("UOW=");
                  if (wsLogRecord != null)
                      sb.append(wsLogRecord.getCorrelationId());
  
                  // next enter the logger name.
                  sb.append(" source=").append(name);
  
                  // append className if non-null
                  if (className != null)
                      sb.append(" class=").append(className);
  
                  // append methodName if non-null
                  if (method != null)
                      sb.append(" method=").append(method);
  
                  if (id != null)
                      sb.append(" id=").append(objId);
  
                  String x;
                  if (wsLogRecord != null) {
                      // next append org, prod, component, if set. Reference equality check is ok here.
                      sb.append(" org=");
                      sb.append(wsLogRecord.getOrganization());
                      sb.append(" prod=");
                      sb.append(wsLogRecord.getProduct());
                      sb.append(" component=");
                      sb.append(wsLogRecord.getComponent());
  
                      //get thread name
                      x = wsLogRecord.getReporterOrSourceThreadName();
                  } else {
                      x = Thread.currentThread().getName();
                  }
                  if (x != null) {
                      sb.append(" thread=[").append(x).append("]");
                  }
  
                  // append formatted message -- txt includes formatted args
                  sb.append(nlAdvancedPadding).append(txt);
                  if (stackTrace != null)
                      sb.append(nlAdvancedPadding).append(stackTrace);
                  break;
          }
  
          return sb.toString();
      }