in log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeEvent.java [83:151]
public FlumeEvent(final LogEvent event, final String includes, final String excludes, final String required,
String mdcPrefix, String eventPrefix, final boolean compress) {
this.event = event;
this.compress = compress;
final Map<String, String> headers = getHeaders();
headers.put(TIMESTAMP, Long.toString(event.getTimeMillis()));
if (mdcPrefix == null) {
mdcPrefix = DEFAULT_MDC_PREFIX;
}
if (eventPrefix == null) {
eventPrefix = DEFAULT_EVENT_PREFIX;
}
final Map<String, String> mdc = event.getContextData().toMap();
if (includes != null) {
final String[] array = includes.split(Patterns.COMMA_SEPARATOR);
if (array.length > 0) {
for (String str : array) {
str = str.trim();
if (mdc.containsKey(str)) {
contextMap.put(str, mdc.get(str));
}
}
}
} else if (excludes != null) {
final String[] array = excludes.split(Patterns.COMMA_SEPARATOR);
if (array.length > 0) {
final List<String> list = new ArrayList<>(array.length);
for (final String value : array) {
list.add(value.trim());
}
for (final Map.Entry<String, String> entry : mdc.entrySet()) {
if (!list.contains(entry.getKey())) {
contextMap.put(entry.getKey(), entry.getValue());
}
}
}
} else {
contextMap.putAll(mdc);
}
if (required != null) {
final String[] array = required.split(Patterns.COMMA_SEPARATOR);
if (array.length > 0) {
for (String str : array) {
str = str.trim();
if (!mdc.containsKey(str)) {
throw new LoggingException("Required key " + str + " is missing from the MDC");
}
}
}
}
final String guid = UuidUtil.getTimeBasedUuid().toString();
final Message message = event.getMessage();
if (message instanceof MapMessage) {
// Add the guid to the Map so that it can be included in the Layout.
@SuppressWarnings("unchecked")
final
MapMessage<?, String> stringMapMessage = (MapMessage<?, String>) message;
stringMapMessage.put(GUID, guid);
if (message instanceof StructuredDataMessage) {
addStructuredData(eventPrefix, headers, (StructuredDataMessage) message);
}
addMapData(eventPrefix, headers, stringMapMessage);
} else {
headers.put(GUID, guid);
}
addContextData(mdcPrefix, headers, contextMap);
}