类org.apache.logging.log4j.core.util.StringEncoder源码实例Demo

下面列出了怎么用org.apache.logging.log4j.core.util.StringEncoder的API类实例代码及写法,或者点击链接到github查看源代码。


@Override
public void append(final LogEvent event) {
    try {
        final Layout<? extends Serializable> layout = getLayout();
        byte[] data;
        if (layout != null) {
            if (layout instanceof SerializedLayout) {
                final byte[] header = layout.getHeader();
                final byte[] body = layout.toByteArray(event);
                data = new byte[header.length + body.length];
                System.arraycopy(header, 0, data, 0, header.length);
                System.arraycopy(body, 0, data, header.length, body.length);
            } else {
                data = layout.toByteArray(event);
            }
        } else {
            data = StringEncoder.toBytes(event.getMessage().getFormattedMessage(), StandardCharsets.UTF_8);
        }
        manager.send(topic, data);
    } catch (final Exception e) {
        LOGGER.error("Unable to write to Kafka [{}] for appender [{}].", manager.getName(), getName(), e);
        throw new AppenderLoggingException("Unable to write to Kafka in appender: " + e.getMessage(), e);
    }
}
 

@Override
public void encode(final LogEvent event, final ByteBufferDestination destination) {

    // Acquire a context.
    final Context context = acquireContext();
    final JsonWriter jsonWriter = context.jsonWriter;
    final StringBuilder stringBuilder = jsonWriter.getStringBuilder();
    final Encoder<StringBuilder> encoder = context.encoder;

    try {

        // Render the JSON.
        eventResolver.resolve(event, jsonWriter);
        stringBuilder.append(eventDelimiter);

        // Write to the destination.
        if (encoder == null) {
            final String eventJson = stringBuilder.toString();
            final byte[] eventJsonBytes = StringEncoder.toBytes(eventJson, charset);
            destination.writeBytes(eventJsonBytes, 0, eventJsonBytes.length);
        } else {
            encoder.encode(stringBuilder, destination);
        }

    }

    // Release the context.
    finally {
        contextRecycler.release(context);
    }

}
 

protected byte[] getBytes(final String s) {
    if (useCustomEncoding) { // rely on branch prediction to eliminate this check if false
        return StringEncoder.encodeSingleByteChars(s);
    }
    try { // LOG4J2-935: String.getBytes(String) gives better performance
        return s.getBytes(charsetName);
    } catch (final UnsupportedEncodingException e) {
        return s.getBytes(charset);
    }
}
 

protected byte[] serializeToBytes(final Serializer serializer, final byte[] defaultValue) {
    final String serializable = serializeToString(serializer);
    if (serializable == null) {
        return defaultValue;
    }
    return StringEncoder.toBytes(serializable, getCharset());
}
 

@Override
public byte[] toByteArray(final LogEvent event) {
    final String eventJson = toSerializable(event);
    return StringEncoder.toBytes(eventJson, charset);
}
 
 类所在包
 类方法
 同包方法