下面列出了org.apache.logging.log4j.core.Layout#getHeader ( ) 实例代码,或者点击链接到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);
}
}
private void tryAppend(final LogEvent event) {
final Layout<? extends Serializable> layout = getLayout();
byte[] data;
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);
}
manager.send(data);
}
public ListAppender(final String name, final Filter filter, final Layout<? extends Serializable> layout,
final boolean newline, final boolean raw) {
super(name, filter, layout, true, Property.EMPTY_ARRAY);
this.newLine = newline;
this.raw = raw;
if (layout != null) {
final byte[] bytes = layout.getHeader();
if (bytes != null) {
write(bytes);
}
}
}
protected void writeHeader(final Layout<?> layout, final OutputStream out) throws IOException {
final byte[] header = layout.getHeader();
if (header != null) {
out.write(header);
}
}