boto3 filter_log_events 不会 return cloudwatch 日志
boto3 filter_log_events doesn't return cloudwatch logs
我用的是python3.7,boto3 1.9.196
单个日志组中有多个日志流(超过 800 个)
组名:我的板
流名称:my-board-20191223-00、my-board-20191223-01 ... my-board-20191223-23
每个流名称设置为当前日期时间 (YYYYMMDD-HH)
self._client.filter_log_events(
logGroupName=log_group,
startTime=start_timestamp,
endTime=end_timestamp,
filterPattern=filterPattern,
limit=limit,
)
例如)开始时间:2019-11-07 00:00:00,结束时间:2019-11-08 23:59:59
它return多个事件
'events': [ blabla... ]
'searchedLogStreams':[
{
'logStreamName': 'my-board-20191101-17',
'searchedCompletely': True
},
blabla...
{
'logStreamName': 'my-board-20191107-14',
'searchedCompletely': True
}, {
'logStreamName': 'my-board-20191107-21',
'searchedCompletely': True
}, {
'logStreamName': 'my-board-20191107-22',
'searchedCompletely': True
}, {
'logStreamName': 'my-board-20191107-23',
'searchedCompletely': True
}, {
'logStreamName': 'my-board-20191108-00',
'searchedCompletely': False # FALSE
}]
eg2) 开始时间:2019-12-23 00:00:00,结束时间:2019-12-24 23:59:59
但是,它 return 没有任何事件!
'events': [], # EMPTY
'searchedLogStreams': [{
'logStreamName': 'my-board-20191101-17',
'searchedCompletely': True
},
blabla...
{
'logStreamName': 'my-board-20191102-17',
'searchedCompletely': True
}, {
'logStreamName': 'my-board-20191105-16',
'searchedCompletely': True
}, {
'logStreamName': 'my-board-20191112-13',
'searchedCompletely': True
}, {
'logStreamName': 'my-board-20191112-14',
'searchedCompletely': True
}, {
'logStreamName': 'my-board-20191112-19',
'searchedCompletely': True
}, {
'logStreamName': 'my-board-20191112-20',
'searchedCompletely': True
}, {
'logStreamName': 'my-board-20191112-21',
'searchedCompletely': True
}, {
'logStreamName': 'my-board-20191112-22',
'searchedCompletely': True
}, {
'logStreamName': 'my-board-20191112-23',
'searchedCompletely': True # TRUE
}]
我想是因为日志流太多了
为什么不起作用?以及如何解决?
如果您在响应中得到下一个标记,请继续
将有标记 return 什么都没有,但会有一个结果你继续滚动。
currentToken = response['nextToken']
response = client.filter_log_events(
limit = 10000,
filterPattern= filterPattern,
startTime= start_timestamp,
logGroupName= log_group,
nextToken=currentToken)
print(response)
我遇到了同样的情况。我最好的猜测是滚动和过滤是独立的。如果您删除过滤器参数(时间,后续调用中的模式,您会发现它 return 与初始调用不匹配的事件。
这是因为 boto3 客户端 returns 在完全加载所有日志之前做出响应。此外,一次响应中返回的日志数量也有限制(1 MB 或 10000 个事件)。
我遇到了同样的情况,并且能够使用@HoaPhan 关于使用 nextToken 的建议。以下是我如何设置它,以便它可以根据需要发出尽可能多的请求来获取所有日志。
results = []
response = client.filter_log_events(
logGroupName = log_group,
logStreamNamePrefix = prefix,
filterPattern = pattern
)
results = results + response['events']
while 'nextToken' in response.keys():
currentToken = response['nextToken']
response = client.filter_log_events(
logGroupName = log_group,
logStreamNamePrefix = prefix,
nextToken = currentToken,
filterPattern = pattern
)
results = results + response['events']
我用的是python3.7,boto3 1.9.196
单个日志组中有多个日志流(超过 800 个)
组名:我的板
流名称:my-board-20191223-00、my-board-20191223-01 ... my-board-20191223-23
每个流名称设置为当前日期时间 (YYYYMMDD-HH)
self._client.filter_log_events(
logGroupName=log_group,
startTime=start_timestamp,
endTime=end_timestamp,
filterPattern=filterPattern,
limit=limit,
)
例如)开始时间:2019-11-07 00:00:00,结束时间:2019-11-08 23:59:59
它return多个事件
'events': [ blabla... ]
'searchedLogStreams':[
{
'logStreamName': 'my-board-20191101-17',
'searchedCompletely': True
},
blabla...
{
'logStreamName': 'my-board-20191107-14',
'searchedCompletely': True
}, {
'logStreamName': 'my-board-20191107-21',
'searchedCompletely': True
}, {
'logStreamName': 'my-board-20191107-22',
'searchedCompletely': True
}, {
'logStreamName': 'my-board-20191107-23',
'searchedCompletely': True
}, {
'logStreamName': 'my-board-20191108-00',
'searchedCompletely': False # FALSE
}]
eg2) 开始时间:2019-12-23 00:00:00,结束时间:2019-12-24 23:59:59
但是,它 return 没有任何事件!
'events': [], # EMPTY
'searchedLogStreams': [{
'logStreamName': 'my-board-20191101-17',
'searchedCompletely': True
},
blabla...
{
'logStreamName': 'my-board-20191102-17',
'searchedCompletely': True
}, {
'logStreamName': 'my-board-20191105-16',
'searchedCompletely': True
}, {
'logStreamName': 'my-board-20191112-13',
'searchedCompletely': True
}, {
'logStreamName': 'my-board-20191112-14',
'searchedCompletely': True
}, {
'logStreamName': 'my-board-20191112-19',
'searchedCompletely': True
}, {
'logStreamName': 'my-board-20191112-20',
'searchedCompletely': True
}, {
'logStreamName': 'my-board-20191112-21',
'searchedCompletely': True
}, {
'logStreamName': 'my-board-20191112-22',
'searchedCompletely': True
}, {
'logStreamName': 'my-board-20191112-23',
'searchedCompletely': True # TRUE
}]
我想是因为日志流太多了
为什么不起作用?以及如何解决?
如果您在响应中得到下一个标记,请继续 将有标记 return 什么都没有,但会有一个结果你继续滚动。
currentToken = response['nextToken']
response = client.filter_log_events(
limit = 10000,
filterPattern= filterPattern,
startTime= start_timestamp,
logGroupName= log_group,
nextToken=currentToken)
print(response)
我遇到了同样的情况。我最好的猜测是滚动和过滤是独立的。如果您删除过滤器参数(时间,后续调用中的模式,您会发现它 return 与初始调用不匹配的事件。
这是因为 boto3 客户端 returns 在完全加载所有日志之前做出响应。此外,一次响应中返回的日志数量也有限制(1 MB 或 10000 个事件)。 我遇到了同样的情况,并且能够使用@HoaPhan 关于使用 nextToken 的建议。以下是我如何设置它,以便它可以根据需要发出尽可能多的请求来获取所有日志。
results = []
response = client.filter_log_events(
logGroupName = log_group,
logStreamNamePrefix = prefix,
filterPattern = pattern
)
results = results + response['events']
while 'nextToken' in response.keys():
currentToken = response['nextToken']
response = client.filter_log_events(
logGroupName = log_group,
logStreamNamePrefix = prefix,
nextToken = currentToken,
filterPattern = pattern
)
results = results + response['events']