func()

in pkg/plugin/cloudlogging/client.go [293:340]


func (c *Client) ListLogs(ctx context.Context, q *Query) ([]*loggingpb.LogEntry, error) {
	// Never exceed the maximum page size
	pageSize := int32(math.Min(float64(q.Limit), 1000))

	resourceName := []string{}
	if q.BucketId == "" {
		resourceName = append(resourceName, legacyProjectResourceName(q.ProjectID))
	} else {
		resourceName = append(resourceName, projectResourceName(q.ProjectID, q.BucketId, q.ViewId))
	}

	req := loggingpb.ListLogEntriesRequest{
		ResourceNames: resourceName,
		Filter:        q.String(),
		OrderBy:       "timestamp desc",
		PageSize:      pageSize,
	}

	start := time.Now()
	defer func() {
		log.DefaultLogger.Debug("Finished listing logs", "duration", time.Since(start).String())
	}()

	it := c.lClient.ListLogEntries(ctx, &req)
	if it == nil {
		return nil, errors.New("nil response")
	}

	var i int64
	entries := []*loggingpb.LogEntry{}
	for {
		resp, err := it.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			log.DefaultLogger.Error("error getting page", "error", err)
			break
		}

		entries = append(entries, resp)
		i++
		if i >= q.Limit {
			break
		}
	}
	return entries, nil
}