Search in sources :

Example 1 with MultiformatMessage

use of org.apache.logging.log4j.message.MultiformatMessage in project logging-log4j2 by apache.

the class MessagePatternConverter method format.

/**
     * {@inheritDoc}
     */
@Override
public void format(final LogEvent event, final StringBuilder toAppendTo) {
    final Message msg = event.getMessage();
    if (msg instanceof StringBuilderFormattable) {
        final boolean doRender = textRenderer != null;
        final StringBuilder workingBuilder = doRender ? new StringBuilder(80) : toAppendTo;
        final StringBuilderFormattable stringBuilderFormattable = (StringBuilderFormattable) msg;
        final int offset = workingBuilder.length();
        stringBuilderFormattable.formatTo(workingBuilder);
        // TODO can we optimize this?
        if (config != null && !noLookups) {
            for (int i = offset; i < workingBuilder.length() - 1; i++) {
                if (workingBuilder.charAt(i) == '$' && workingBuilder.charAt(i + 1) == '{') {
                    final String value = workingBuilder.substring(offset, workingBuilder.length());
                    workingBuilder.setLength(offset);
                    workingBuilder.append(config.getStrSubstitutor().replace(event, value));
                }
            }
        }
        if (doRender) {
            textRenderer.render(workingBuilder, toAppendTo);
        }
        return;
    }
    if (msg != null) {
        String result;
        if (msg instanceof MultiformatMessage) {
            result = ((MultiformatMessage) msg).getFormattedMessage(formats);
        } else {
            result = msg.getFormattedMessage();
        }
        if (result != null) {
            toAppendTo.append(config != null && result.contains("${") ? config.getStrSubstitutor().replace(event, result) : result);
        } else {
            toAppendTo.append("null");
        }
    }
}
Also used : MultiformatMessage(org.apache.logging.log4j.message.MultiformatMessage) Message(org.apache.logging.log4j.message.Message) StringBuilderFormattable(org.apache.logging.log4j.util.StringBuilderFormattable) MultiformatMessage(org.apache.logging.log4j.message.MultiformatMessage)

Aggregations

Message (org.apache.logging.log4j.message.Message)1 MultiformatMessage (org.apache.logging.log4j.message.MultiformatMessage)1 StringBuilderFormattable (org.apache.logging.log4j.util.StringBuilderFormattable)1