Error al utilizar el registro de Google Stackdriver en App Engine Standard python

Mi stack
Google App Engine Standard
Python (2.7)

Gol:
Para crear registros con nombre en el Registro de Google Stackdriver, https://console.cloud.google.com/logs/viewer

Docs – Registro del controlador de stack: https://google-cloud-python.readthedocs.io/en/latest/logging/usage.html

Código:

from google.cloud import logging as stack_logging from google.cloud.logging.resource import Resource import threading class StackdriverLogging: def __init__(self, resource=Resource(type='project', labels={'project_id': 'project_id'}), project_id='project_id'): self.resource = resource self.client = stack_logging.Client(project=project_id) def delete_logger(self, logger_name): logger = self.client.logger(logger_name) logger.delete() def async_log(self, logger_name, sev, msg): t = threading.Thread(target=self.log, args=(logger_name, sev, msg,)) t.start() def log(self, logger_name, sev, msg): logger = self.client.logger(logger_name) if isinstance(msg, str): logger.log_text(msg, severity=sev, resource=self.resource) elif isinstance(msg, dict): logger.log_struct(msg, severity=sev, resource=self.resource) class hLog(webapp2.RequestHandler): def get(self): stackdriver_logger = StackdriverLogging() stackdriver_logger.async_log("my_new_log", "WARNING", msg="Hello") stackdriver_logger.async_log("my_new_log", "INFO", msg="world") 

ERROR: Se encontraron 1 solicitudes RPC sin respuesta coincidente

Si esto no es posible en Google App Engine Standard (Python), es posible que este código funcione:

  from google.cloud import logging client = logging.Client() # client = logging.Client.from_service_account_json('credentials.json') logger = client.logger("my_new_log") logger.log_text("hello world") 

Si se requieren credenciales, me gusta usar la cuenta de servicio del proyecto.

Cualquier ayuda sería apreciada. Gracias.

Por lo general, vinculo el módulo de registro de Python directamente al registro de Google Stackdriver. Para hacer esto, creo un módulo log_helper:

 from google.cloud import logging as gc_logging import logging logging_client = gc_logging.Client() logging_client.setup_logging(logging.INFO) from logging import * 

Que luego importo en otros archivos como este:

 import log_helper as logging 

Después de lo cual puede usar el módulo como lo haría con el módulo de registro de Python predeterminado.

Para crear registros con nombre con el módulo de registro de Python predeterminado, use diferentes registradores para diferentes espacios de nombres:

 import log_helper as logging test_logger = logging.getLogger('test') test_logger.setLevel(logging.INFO) test_logger.info('is the name of this logger') 

Salida:

INFO: prueba: es el nombre de este registrador