Я использую Stackdriver Logging для Python и Python logger одновременно. Я использую функцию google.cloud.logging.logger.log_struct
(https://gcloud -python.readthedocs.io / en / latest / logging / logger.html ) для записи JSON в Stackdriver.
Я могу просматривать журналы, как и ожидалось, в средстве просмотра журналов с выбранным ресурсом Global
, когда я запускаю свой сценарий с использованием Google Compute Engine VM instance
. Структура, которую я регистрирую, правильно записана в jsonPayload
.
Однако, когда запись ведется с Google Kubernetes Engine
, представление журнала не показывает пройденные мной структуры, а скорее то, что напечатано на stdout
. Как мне убедиться, что я наблюдаю такое же поведение от Google Compute Engine VM instance
и Google Kubernetes Engine
?
Это фрагмент, показывающий, как я веду запись в журнал:
import google.cloud.logging
import logging
logging_client = google.cloud.logging.Client()
# connects the logger to the root logging handler
cloud_logger = logging_client.logger('email_adaptor')
formatter = logging.Formatter(
'%(asctime)s - %(levelname)s - %(message)s - %(lineno)d - %(filename)s')
# get the logger a name
logger = logging.getLogger('email_adaptor')
# set a level for the logger
logger.setLevel(logging.DEBUG)
# make the logger write on stdout
stdout_alarm_log = logging.StreamHandler(sys.stdout)
stdout_alarm_log.setFormatter(formatter)
logger.addHandler(stdout_alarm_log)
struct = {'message':'Processed Alarm', 'valid': True}
cloud_logger.log_struct(struct, severity='INFO')
logger.info(str(struct))
Это пример того, что я получаю на STDOUT как на VM instance
, так и на Kubernetes Engine
:
2018-10-26 12:30:20,008 - INFO - Processed Alarm {'valid': True} - 79 - log.py
INFO:email_adaptor:Processed Alarm {'valid': True}
Это то, что я вижу под ресурсом Global
в Google Log Viewer (журналы взяты из моего экземпляра виртуальной машины и не соответствуют примеру, который я привел в коде фрагмента):
Это то, что я вижу под ресурсом Google Kubernetes Engine
: Структура не отображается, вместо этого я вижу то, что напечатано на STDOUT
: