Im trying to get all the logs from the current month for an instance and I'm trying to get the next_page_token
but it is not present in the response object. Here's what I tried so far.
from pytz import timezone
from datetime import datetime
from calendar import monthrange
from google.cloud import logging
from google.oauth2 import service_account
def getInstanceLogsList(
instanceId: str,
authTokenDict: dict,
):
today = datetime.now().astimezone(tz = timezone("Asia/Kolkata"));
monthStartDay = 1
monthEndDay = monthrange(today.year, today.month)[1]
credentials = service_account.Credentials.from_service_account_info(authTokenDict)
loggingClient = logging.Client(credentials = credentials)
endDateTimeObject = datetime(year = today.year, month = today.month, day = monthEndDay, hour = 23, minute = 59, second = 59).astimezone(tz = timezone("Asia/Kolkata")).strftime("%Y-%m-%dT%H:%M:%S%z")
startDateTimeObject = datetime(year = today.year, month = today.month, day = monthStartDay, hour = 0, minute = 0, second = 0).astimezone(tz = timezone("Asia/Kolkata")).strftime("%Y-%m-%dT%H:%M:%S%z")
pageToken = None
listLogsResponse = []
while True:
response = loggingClient.list_entries(
filter_ = f'resource.type = "gce_instance" AND resource.labels.instance_id = "{instanceId}" AND timestamp >= "{startDateTimeObject}" AND timestamp <= "{endDateTimeObject}"',
page_token = pageToken
)
listLogsResponse.extend(response)
if response.next_page_token:
pageToken = response.next_page_token
else:
break
On trying this code I'm getting the following error
AttributeError: 'generator' object has no attribute 'next_page_token'
How to access next_page_token
That's the magic of the client API! The generator hides the complexity of page management and so on.
Only loop over the generator. If the next page is requested, it will ask for it automatically. You only see your loop on your side, it's much more easy!
More detail here