gpt4 book ai didi

python - 在 App Engine Standard python 中使用 Google Stackdriver Logging 时出错

转载 作者:太空狗 更新时间:2023-10-29 18:09:16 24 4
gpt4 key购买 nike

我的堆栈:
谷歌应用引擎标准
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")

如果需要凭据,我喜欢使用项目服务帐户。

如有任何帮助,我们将不胜感激。谢谢。

最佳答案

我通常将 Python 日志记录模块直接绑定(bind)到 Google Stackdriver 日志记录中。为此,我创建了一个 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')

输出:

INFO:test:is the name of this logger

关于python - 在 App Engine Standard python 中使用 Google Stackdriver Logging 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47223678/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com