В настоящее время нет способа добавить execution_id
в записи логов.Но, следуя подходу этого ответа , вы можете легко отфильтровать записи журнала, относящиеся к одному и тому же выполнению функции, в интерфейсе ведения журнала Stackdriver.
С помощью этого кода функции облака:
import time
from google.cloud import logging
from google.cloud.logging.resource import Resource
identifier = str(time.time())
log_client = logging.Client()
log_name = 'cloudfunctions.googleapis.com%2Fcloud-functions'
resource = Resource(type="cloud_function", labels={"function_name": "yourCloudFunctionName", "region": "yourFunctionLocation"})
logger = log_client.logger(log_name.format("yourProjectId"))
def hello_world(request):
logger.log_struct({"message": "message string to log", "id": identifier}, resource=resource, severity='ERROR')
return 'Wrote logs to {}.'.format(logger.name)
После выполнения откройте запись журнала в интерфейсе ведения журнала Strackdriver.Отобразите jsonPayload
и, щелкнув по элементу id
, отобразится Show matching entries
.Это добавит фильтр:
resource.type="cloud_function"
resource.labels.function_name="yourFunctionName"
jsonPayload.id="theID"
И будут показаны все записи в журналах, относящиеся к этому выполнению.
Наконец, просто имейте в виду, что среда исполнения Cloud Function Python 3.7 все еще находится в стадии бета-тестирования.и может быть предметом будущих изменений.