Я добавил в ответ объяснение о том, как создавать именованные журналы.

тек:
Google App Engine Standard
Python (2.7)

Цель:
Чтобы создать именованные журналы в Google Stackdriver Logging,https://console.cloud.google.com/logs/viewer

Документы - ведение журнала Stackdriver: https://google-cloud-python.readthedocs.io/en/latest/logging/usage.html

Код:

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")

ОШИБКА: Найдено 1 запросов RPC без соответствующего ответа

Если это невозможно в Google App Engine Standard (Python), любой способ заставить этот код работать:

  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") 

Если требуются учетные данные, я хотел бы использовать учетную запись службы проекта.

Любая помощь будет оценена. Спасибо.

 the0ther10 нояб. 2017 г., 17:13
пару дней назад я просто просматривал некоторые проблемы с журналированием в Python, и в это время я заметил журнал в Stackdriver с именем «app». Я не уверен, откуда пришло имя, но оно регистрировалось так, как я хотел, с учетом уровня журнала и всего остального. В поисках документов я наткнулся на следующее:googlecloudplatform.github.io/google-cloud-python/latest/..., Я не использовал это, но, возможно, это поможет вам?

Ответы на вопрос(1)

tackdriver Logging. Для этого я создаю модуль 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 *

Который я тогда импортирую в другие файлы как это:

import log_helper as logging

После чего вы можете использовать модуль, как если бы вы использовали модуль регистрации Python по умолчанию.

Чтобы создать именованные журналы с модулем ведения журналов python по умолчанию, используйте разные регистраторы для разных пространств имен:

import log_helper as logging

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

Выход:

ИНФОРМАЦИЯ: тест: это имя этого регистратора

 Robbe24 нояб. 2017 г., 15:41
@BrianB Именованная регистрация довольно проста с модулем регистрации по умолчанию. Вы можете использовать разные регистраторы для разных пространств имен.
 Robbe27 нояб. 2017 г., 16:35
Я добавил в ответ объяснение о том, как создавать именованные журналы.
 Brian B24 нояб. 2017 г., 16:55
Как бы вы создали именованный журнал в Google App Engine Standard (Python)?
 Brian B24 нояб. 2017 г., 15:17
Это НЕ ПРАВИЛЬНЫЙ ОТВЕТ! Это не относится к вопросу создания именованных журналов.

Ваш ответ на вопрос