public PutLogsResponse PutLogs()

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;
	}