下面的代码在我以调试模式运行它时返回记录,并在此行上设置一个断点并进入该行。但是当我在常规运行中运行它并且不进入这一行时,它会产生 0 结果。我究竟做错了什么?谢谢
GetQueryResultsResult getQueryResultsResult = awslogs.getQueryResults(getQueryResultsRequest);
下面的代码在我以调试模式运行它时返回记录,并在此行上设置一个断点并进入该行。但是当我在常规运行中运行它并且不进入这一行时,它会产生 0 结果。我究竟做错了什么?谢谢
GetQueryResultsResult getQueryResultsResult = awslogs.getQueryResults(getQueryResultsRequest);
在该代码行之前添加以下代码行已解决了该问题:
TimeUnit.SECONDS.sleep(2);
谢谢
查询不是由 的方法执行getQueryResults
的CloudWatchLogsClient
,是在调用时执行的startQuery
。
startQuery
可能需要很长时间才能完成执行,因此如果您在 之后立即调用,getQueryResults
它startQuery
不会得到结果,因为查询可能仍在运行。
因此,要获得结果,您可以通过检查以下状态来验证查询是否仍在运行GetQueryResultsResponse
:
GetQueryResultsResponse getQueryResultsResponse = null;
do {
getQueryResultsResponse = awslogs.getQueryResults(getQueryResultsRequest);
} while ("Running".equals(getQueryResultsResponse.status().toString()));