我正在使用日志包中的Google logadmin包,并尝试使用过滤器检索一些日志。很简单...大概我想。但是迭代器从不返回iterator.Done
。
通过查看GitHub程序包中 Unresolved 问题并进行搜索,我什么都找不到。
我的代码:
iter := client.Entries(ctx, logadmin.NewestFirst(),
logadmin.Filter(
fmt.Sprintf(`resource.type="cloud_function" resource.labels.function_name="%s"`, logger)))
var entries []string
for {
select {
case <-ctx.Done():
return nil
default:
entry, err := iter.Next()
log.Print(fmt.Sprintf("[%s] [LEVEL]: %s\n [PAYLOAD]: %s\n [TIMESTAMP]: %s\n\n", logger,
entry.Severity, entry.Payload, entry.Timestamp.String()))
if err == iterator.Done {
return nil
}
if err != nil {
return err
}
}
}
最佳答案
我设法通过向过滤器添加时间戳来解决问题,如下所示:
now := time.Now().Add(-24 * time.Hour).Format(time.RFC3339)
filter := fmt.Sprintf(`resource.type="cloud_function" resource.labels.function_name="%s" timestamp > %s`, logger, now)
关于go - Google的logadmin中的条目迭代器从不返回迭代器。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62922687/