publicclassCloudWatchLog{privatestaticfinalString accessKey ="<your key>";privatestaticfinalString secretKey ="<your secret>";privatestaticfinalString region ="us-west-1";// 日志组的名称privatestaticfinalString groupName ="klover-test";// 日志流的名称privatestaticfinalString streamName ="klover";privatestaticCloudWatchLogsClient slsClient;static{AwsBasicCredentials credentials =AwsBasicCredentials.create(
accessKey,
secretKey
);
slsClient =CloudWatchLogsClient.builder().region(Region.of(region)).credentialsProvider(()-> credentials).build();}/**
* 上传日志
*
* @param params 参数
*/publicstaticvoidputLog(Map<String,Object> params){DescribeLogStreamsRequest logStreamRequest =DescribeLogStreamsRequest.builder().logGroupName(groupName).logStreamNamePrefix(streamName).build();DescribeLogStreamsResponse describeLogStreamsResponse = slsClient.describeLogStreams(logStreamRequest);// Assume that a single stream is returned since a specific stream name was// specified in the previous request.String sequenceToken = describeLogStreamsResponse.logStreams().getFirst().uploadSequenceToken();// Build an input log message to put to CloudWatch.InputLogEvent inputLogEvent =InputLogEvent.builder().message(JsonUtil.toJSONString(params)).timestamp(System.currentTimeMillis()).build();// Specify the request parameters.// Sequence token is required so that the log can be written to the// latest location in the stream.PutLogEventsRequest putLogEventsRequest =PutLogEventsRequest.builder().logEvents(Collections.singletonList(inputLogEvent)).logGroupName(groupName).logStreamName(streamName).sequenceToken(sequenceToken).build();
slsClient.putLogEvents(putLogEventsRequest);}}