public static void getCWLogEvebts(CloudWatchLogsClient cloudWatchLogsClient, String logGroupName, String logStreamName) {
try {
// Designate the logGroupName and logStream you want to get logs from
// Assume only one stream name exists, however, this isn't always the case
GetLogEventsRequest getLogEventsRequest = GetLogEventsRequest.builder()
.logGroupName(logGroupName)
.logStreamName(logStreamName)
.startFromHead(true)
.build();
int logLimit = cloudWatchLogsClient.getLogEvents(getLogEventsRequest).events().size();
for (int c = 0; c < logLimit; c++) {
// Prints the messages to the console
System.out.println(cloudWatchLogsClient.getLogEvents(getLogEventsRequest).events().get(c).message());
}
} catch (CloudWatchException e) {
System.err.println(e.awsErrorDetails().errorMessage());
System.exit(1);
}
System.out.println("Successfully got CloudWatch log events!");
// snippet-end:[cloudwatch.java2.get_logs.main]
}
/**
* Test uploading and retrieving log events.
*/
@Test
public void testEventsLogging() {
// No log event is expected in the newly created log stream
GetLogEventsResponse getResult = awsLogs.getLogEvents(GetLogEventsRequest.builder().logGroupName(logGroupName).logStreamName(logStreamName).build());
Assert.assertTrue(getResult.events().isEmpty());
// Insert a new log event
PutLogEventsRequest request = PutLogEventsRequest.builder()
.logGroupName(logGroupName)
.logStreamName(logStreamName)
.logEvents(InputLogEvent.builder()
.message(LOG_MESSAGE)
.timestamp(LOG_MESSAGE_TIMESTAMP)
.build())
.build();
PutLogEventsResponse putResult = awsLogs.putLogEvents(request);
Assert.assertNotNull(putResult.nextSequenceToken());
// The new log event is not instantly available in GetLogEvents operation.
try {
Thread.sleep(5000);
} catch (InterruptedException ignored) {
// Ignored or expected.
}
// Pull the event from the log stream
getResult = awsLogs.getLogEvents(GetLogEventsRequest.builder().logGroupName(logGroupName).logStreamName(logStreamName).build());
Assert.assertEquals(1, getResult.events().size());
Assert.assertNotNull(getResult.nextBackwardToken());
Assert.assertNotNull(getResult.nextForwardToken());
OutputLogEvent event = getResult.events().get(0);
Assert.assertEquals(LOG_MESSAGE, event.message());
Assert.assertEquals(LOG_MESSAGE_TIMESTAMP, event.timestamp().longValue());
// Use DescribeLogStreams API to verify that the new log event has
// updated the following parameters of the log stream.
final LogStream stream = findLogStreamByName(awsLogs, logGroupName, logStreamName);
Assert.assertEquals(LOG_MESSAGE_TIMESTAMP, stream.firstEventTimestamp().longValue());
Assert.assertEquals(LOG_MESSAGE_TIMESTAMP, stream.lastEventTimestamp().longValue());
Assert.assertNotNull(stream.lastIngestionTime());
}