首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >boto3 filter_log_events不返回cloudwatch日志

boto3 filter_log_events不返回cloudwatch日志
EN

Stack Overflow用户
提问于 2020-01-08 11:49:46
回答 2查看 1.1K关注 0票数 2

我使用Python3.7,boto3 1.9.196

单个日志组中有多个日志流(超过800个)

群名称: my-board

流名称: my-board-20191223-00,my-board-20191223-01...我的董事会-20191223-23

使用当前日期时间设置的每个流名称(YYYYMMDD-HH)

代码语言:javascript
运行
复制
self._client.filter_log_events(
    logGroupName=log_group,
    startTime=start_timestamp,
    endTime=end_timestamp,
    filterPattern=filterPattern,
    limit=limit,
)

例如) startTime : 2019-11-07 00:00:00,endTime : 2019-11-08 23:59:59

它返回多个事件

代码语言:javascript
运行
复制
'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) startTime : 2019-12-23 00:00:00,endTime : 2019-12-24 23:59:59

但是,它不会返回任何事件!

代码语言:javascript
运行
复制
'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
}]

我想是因为有太多的日志流

为什么它不起作用?以及如何修复它?

EN

回答 2

Stack Overflow用户

发布于 2020-11-10 22:29:00

如果你在响应中得到了下一个令牌,继续做,将会有一个令牌不返回任何东西,但会有一个结果你继续滚动。

代码语言:javascript
运行
复制
currentToken = response['nextToken']
response = client.filter_log_events(
        limit = 10000,
        filterPattern= filterPattern,
        startTime= start_timestamp,
        logGroupName= log_group,
        nextToken=currentToken)
print(response)

我也遇到过同样的情况。我最好的猜测是滚动和过滤是独立的。如果你删除了过滤器参数(在后续调用中的时间,模式,你会发现它返回的事件与初始调用不匹配)。

票数 3
EN

Stack Overflow用户

发布于 2021-04-27 02:27:23

这是因为boto3客户端在完全加载所有日志之前返回响应。此外,在一次响应中返回的日志数量也有限制(1 MB或10000个事件)。我遇到了同样的情况,并且能够使用@HoaPhan的建议来使用nextToken。下面是我如何设置它,以便它可以根据需要发出尽可能多的请求来获取所有日志。

代码语言:javascript
运行
复制
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']
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59639167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档