in src/main/java/com/aliyun/openservices/log/Client.java [706:831]
public PutLogsResponse PutLogs(PutLogsRequest request) throws LogException {
CodingUtils.assertParameterNotNull(request, "request");
String project = request.GetProject();
CodingUtils.assertStringNotNullOrEmpty(project, "project");
String logStore = request.GetLogStore();
CodingUtils.assertStringNotNullOrEmpty(logStore, "logStore");
String shardKey = request.getHashKey();
CompressType compressType = request.getCompressType();
CodingUtils.assertParameterNotNull(compressType, "compressType");
byte[] logBytes = request.GetLogGroupBytes();
if (logBytes == null) {
List<LogItem> logItems = request.GetLogItems();
String topic = request.GetTopic();
CodingUtils.assertParameterNotNull(topic, "topic");
String source = request.GetSource();
if (!Consts.CONST_SLS_JSON.equals(request.getContentType())) {
Logs.LogGroup.Builder logs = Logs.LogGroup.newBuilder();
logs.setTopic(topic);
if (source == null || source.isEmpty()) {
logs.setSource(this.sourceIp);
} else {
logs.setSource(source);
}
ArrayList<TagContent> tags = request.GetTags();
if (tags != null && tags.size() > 0) {
for (TagContent tag : tags) {
Logs.LogTag.Builder tagBuilder = logs.addLogTagsBuilder();
tagBuilder.setKey(tag.getKey());
tagBuilder.setValue(tag.getValue());
}
}
if (this.mUUIDTag) {
Logs.LogTag.Builder tagBuilder = logs.addLogTagsBuilder();
tagBuilder.setKey("__pack_unique_id__");
tagBuilder.setValue(UUID.randomUUID().toString() + "-" + Math.random());
}
for (LogItem item : logItems) {
Logs.Log.Builder log = logs.addLogsBuilder();
log.setTime(item.mLogTime);
if (item.mLogTimeNsPart != 0)
log.setTimeNs(item.mLogTimeNsPart);
for (LogContent content : item.mContents) {
CodingUtils.assertStringNotNullOrEmpty(content.mKey, "key");
Logs.Log.Content.Builder contentBuilder = log
.addContentsBuilder();
contentBuilder.setKey(content.mKey);
if (content.mValue == null) {
contentBuilder.setValue("");
} else {
contentBuilder.setValue(content.mValue);
}
}
}
logBytes = logs.build().toByteArray();
} else {
JSONObject jsonObj = new JSONObject();
jsonObj.put("__topic__", topic);
if (source == null || source.isEmpty()) {
jsonObj.put("__source__", this.sourceIp);
} else {
jsonObj.put("__source__", source);
}
JSONArray logsArray = new JSONArray();
for (LogItem item : logItems) {
JSONObject jsonObjInner = new JSONObject();
jsonObjInner.put(Consts.CONST_RESULT_TIME, item.mLogTime);
if (item.mLogTimeNsPart != 0)
jsonObjInner.put(Consts.CONST_RESULT_TIME_NS_PART, item.mLogTimeNsPart);
for (LogContent content : item.mContents) {
jsonObjInner.put(content.mKey, content.mValue);
}
logsArray.add(jsonObjInner);
}
jsonObj.put("__logs__", logsArray);
JSONObject tagObj = new JSONObject();
ArrayList<TagContent> tags = request.GetTags();
if (tags != null && tags.size() > 0) {
for (TagContent tag : tags) {
tagObj.put(tag.getKey(), tag.getValue());
}
}
if (this.mUUIDTag) {
tagObj.put("__pack_unique_id__", UUID.randomUUID().toString() + "-" + Math.random());
}
if (tagObj.size() > 0) {
jsonObj.put("__tags__", tagObj);
}
logBytes = encodeToUtf8(jsonObj.toString());
}
}
checkBodyRawSize(logBytes.length);
Map<String, String> headParameter = GetCommonHeadPara(project);
headParameter.put(Consts.CONST_CONTENT_TYPE, request.getContentType());
headParameter.put(Consts.CONST_X_SLS_BODYRAWSIZE, String.valueOf(logBytes.length));
if (request.getCompressType() != CompressType.NONE) {
headParameter.put(Consts.CONST_X_SLS_COMPRESSTYPE, request.getCompressType().toString());
}
logBytes = Utils.compressLogBytes(logBytes, request.getCompressType());
Map<String, String> urlParameter = request.GetAllParams();
StringBuilder resourceUriBuilder = new StringBuilder();
if (isUseMetricStoreUrl()) {
resourceUriBuilder.append("/prometheus/").
append(request.GetProject()).
append("/").
append(logStore).append("/api/v1/write");
} else if (shardKey == null || shardKey.isEmpty()) {
resourceUriBuilder.append("/logstores/").append(logStore).append("/shards/lb");
} else {
resourceUriBuilder.append("/logstores/").append(logStore).append("/shards/route");
urlParameter.put("key", shardKey);
if (request.getHashRouteKeySeqId() != null) {
urlParameter.put("seqid", String.valueOf(request.getHashRouteKeySeqId()));
}
}
if (request.getProcessor() != null && !request.getProcessor().isEmpty()) {
urlParameter.put("processor", request.getProcessor());
}
ResponseMessage response = sendLogBytes(project, logBytes, resourceUriBuilder.toString(), urlParameter, headParameter);
if (response != null) {
return new PutLogsResponse(response.getHeaders());
}
// never happen
return null;
}