# #python #google-cloud-functions #google-cloud-logging #generator-expression
Вопрос:
Я хочу зарегистрировать все показатели на основе журналов, которые у меня есть в моем проекте gcp, с помощью облачной функции на python. Я пытаюсь запустить следующий пример кода:
for metric in client.list_metrics(): # API call(s)
#do_something_with(metric)
print(metric)
У меня есть следующий вывод журнала:
"<google.cloud.logging_v2.metric.Metric object at 0x3e9bfe2fb4c0>"
Как мне это прочесть? Я пытался list()
json.loads()
, json.dumps()
но , кажется, ничего не получается.
Комментарии:
1. Я только что заметил эту часть вашего вопроса — > «Я проголосовал по этому вопросу, и я не понимаю, почему».. Я не один из тех, кто голосует против, поэтому я не уверен в их аргументации, но я думаю, что это потому, что ваш вопрос касается основ Python в целом. Что такое объекты и как с ними следует обращаться, объясняется в каждом базовом курсе. В сочетании с тем фактом, что его можно легко погуглить, я думаю, что это может быть причиной снижения голосов.
Ответ №1:
Вы возвращаете объект python:
«объект logging_v2.metric.Metric в 0x3e9bfe2fb4c0>»
Согласно этой документации, он обладает некоторыми свойствами.
Так что что-то вроде
print(metric.name)
должно сработать на вас.
Комментарии:
1. Есть ли способ исследовать подобный объект, не имея доступа к документации? Или вам нужен доступ к документу? Как я могу узнать ключ, например, для получения глобального объекта? Если я хочу распечатать весь список напрямую?
2. Извините, что добавил еще один комментарий;
metric.name
работает, но нетmetric.filter
…3. Вы всегда можете использовать print(dir(метрика)), но это не всегда будет полностью объяснено. В большинстве случаев я бы просто доверял документации, особенно поставщикам размером с Google.
4. В качестве примечания: имхо всегда лучше в подобных сценариях отлаживать и пошагово выполнять код, где это возможно. Dir поможет вам далеко продвинуться, но, например, не проводит различия между свойствами и методами, которые вы должны выяснить сами.