protected String createPrepend(LogEvent e) {
        StringBuffer pre = new StringBuffer(80);

        String code = "??";
        switch (e.getType()) {
        case LogEvent.DEBUG_TYPE:
            code = " D";
            break;
        case LogEvent.INFO_TYPE:
            code = " I";
            break;
        case LogEvent.WARN_TYPE:
            code = "*W";
            break;
        case LogEvent.ERROR_TYPE:
            code = "*E";
            break;
        }

        pre.append(code);
        pre.append(',');
        if (mFastFormat != null) {
            pre.append(mFastFormat.format(e.getTimestamp()));
        }
        else {
            synchronized (mSlowFormat) {
                pre.append(mSlowFormat.format(e.getTimestamp()));
            }
        }

        if (isShowThreadEnabled()) {
            pre.append(',');
            pre.append(e.getThreadName());
        }

        if (isShowSourceEnabled()) {
            Log source = e.getLogSource();
            if (source != null) {
                String sourceName = source.getName();
                if (sourceName != null) {
                    pre.append(',');
                    pre.append(sourceName);
                }
            }
        }

        pre.append('>');
        pre.append(' ');

        return pre.toString();
    }