in ozhera-log/log-common/src/main/java/org/apache/ozhera/log/parse/SeparatorLogParser.java [50:147]
public Map<String, Object> doParseSimple(String logData, Long collectStamp) {
Map<String, Object> ret = new HashMap<>();
if (logData == null) {
return ret;
}
if (logData.isEmpty()) {
return ret;
}
try {
int maxLength = (int) Arrays.stream(values).filter(s -> !"-1".equals(s)).count();
List<String> logArray = parseLogData(logData, maxLength);
if (0 == maxLength) {
ret.put(ES_KEY_MAP_MESSAGE, logData);
return ret;
}
if (values.length == 1 && logArray.size() == 1 && maxLength == 1) {
String[] ktSplit = keysAndTypes[0].split(":");
String keysAndType = ktSplit[0];
ret.put(keysAndType, logArray.get(0));
return ret;
}
int count = 0;
int valueCount = 0;
/**
* Normal parsing
*/
for (int i = 0; i < keysAndTypes.length; i++) {
String[] kTsplit = keysAndTypes[i].split(":");
if (kTsplit.length != 2 || i >= values.length && (null == valueMap || valueMap.isEmpty())) {
continue;
}
if (kTsplit[0].equals(esKeyMap_topic)) {
count++;
ret.put(esKeyMap_topic, parserData.getTopicName());
continue;
} else if (kTsplit[0].equals(esKeyMap_tag)) {
count++;
ret.put(esKeyMap_tag, parserData.getMqTag());
continue;
} else if (kTsplit[0].equals(esKeyMap_logstoreName)) {
count++;
ret.put(esKeyMap_logstoreName, parserData.getLogStoreName());
continue;
} else if (kTsplit[0].equals(esKeyMap_tail)) {
count++;
ret.put(esKeyMap_tail, parserData.getTailName());
continue;
} else if (kTsplit[0].equals(ES_KEY_MAP_LOG_SOURCE)) {
count++;
continue;
}
if (null != valueMap && !valueMap.isEmpty()) {
String key = kTsplit[0].trim();
if (valueMap.containsKey(key)) {
String value = logArray.get(valueMap.get(key));
ret.put(key, value);
}
} else {
String value = null;
int num = -1;
try {
num = Integer.parseInt(values[i]);
if (num == -1) {
valueCount++;
continue;
}
} catch (Exception e) {
continue;
}
if (num < logArray.size() && num > -1) {
value = logArray.get(num);
} else {
value = "";
}
if (kTsplit[0].equals(esKeyMap_timestamp) || kTsplit[1].equalsIgnoreCase(esKeyMap_Date)) {
ret.put(esKeyMap_timestamp, value);
} else {
ret.put(kTsplit[0], StringUtils.isNotEmpty(value) ? value.trim() : value);
}
}
}
/**
* The field is misconfigured
* esKeyMap_topic,esKeyMap_tag,esKeyMap_logstoreName,esKeyMap_logSource are not visible to the user, i.e. do not exist in values, logArray
*/
if (ret.values().stream().filter(Objects::nonNull).map(String::valueOf).anyMatch(StringUtils::isEmpty)) {
ret.put(ES_KEY_MAP_LOG_SOURCE, logData);
}
} catch (Exception e) {
ret.put(ES_KEY_MAP_LOG_SOURCE, logData);
}
validTimestamp(ret, collectStamp);
return ret;
}