我正在尝试使用标准库来调试我的代码:
这很好用:
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
logger.info('message')
Run Code Online (Sandbox Code Playgroud)
我无法为较低级别的记录器工作:
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
logger.info('message')
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
logger.debug('message')
Run Code Online (Sandbox Code Playgroud)
我没有得到任何回应.
我想从我的应用引擎标准 python3 应用程序向堆栈驱动程序日志发送更具表现力的日志条目。通过遵循官方文档,我能够将我的日志发送到 stackdriver,并且时间戳似乎被正确解析。
但我错过了严重程度。此外,我看不到将某个请求的日志链接到操作的方法。java日志记录似乎是开箱即用的。
供参考,这是我的代码:
import logging
import os
from flask import Flask
from google.cloud import logging as glog
app = Flask(__name__)
log_client = glog.Client(os.getenv('GOOGLE_CLOUD_PROJECT'))
# Attaches a Google Stackdriver logging handler to the root logger
log_client.setup_logging()
@app.route('/_ah/push-handlers/cloudbuild', methods=['POST'])
def pubsub_push_handle():
logging.info("stdlib info")
logging.warning("stdlib warn")
logging.error("stdlib error")
Run Code Online (Sandbox Code Playgroud)
导致堆栈驱动程序的日志:
如您所见,时间戳和消息可用,而严重性奇怪地缺失,它被归类为“任何”
有人可以指出我正确的方向,还是这种级别的合并尚不可用?
谢谢你的时间!卡斯腾
google-app-engine python-3.x google-cloud-platform stackdriver google-cloud-stackdriver
我正在使用Google App Engine python 3.7标准,并且试图对相关的请求日志条目进行分组。根据“ 编写应用程序日志”文档,我应该:
在应用程序日志条目的LogEntry跟踪字段中设置跟踪标识符。预期的格式是项目/ [PROJECT_ID] /跟踪/ [TRACE_ID]
在哪里/如何使用LogEntry?
在为Stackdriver日志文件没有显示它是如何可能的。我想念什么吗?
代码示例将不胜感激。
[更新]按照Duck Hunt Duo的建议,我尝试了以下操作,但没有成功:
trace_id = request.headers.get('X-Cloud-Trace-Context', 'no_trace_id').split('/')[0]
client = logging.Client()
logger = client.logger('appengine.googleapis.com%2Fstdout') # Not shown
# logger = client.logger('projects/{}/logs/stdout'.format(GOOGLE_CLOUD_PROJECT)) # error
# logger = client.logger('projects/{}/logs/appengine.googleapis.com%2Fstdout'.format(GOOGLE_CLOUD_PROJECT)) # error
logger.log_text('log_message', trace=trace_id)
Run Code Online (Sandbox Code Playgroud)
该日志未出现在GAE服务日志Web控制台中
logging google-app-engine python-3.x google-cloud-platform stackdriver
我正在第一次尝试 GCP 的云函数和 python,并希望将 python 的日志记录充分集成,以便它们能够很好地适应 GCP 的日志记录基础设施(特别是为了识别严重性级别,并且最好还包括execution_ids 和跟踪 id)。
我一直在关注https://cloud.google.com/logging/docs/setup/python来进行此设置。
我的代码:
import base64
import logging
import google.cloud.logging
client = google.cloud.logging.Client()
client.get_default_handler()
client.setup_logging()
logging.getLogger().setLevel(logging.DEBUG)
def sample_pubsub(event, context):
pubsub_message = base64.b64decode(event['data']).decode('utf-8')
print('BEFORE LOG')
logging.info(f'Event received: payload data == [{pubsub_message}]')
logging.debug('This is debug')
logging.warn('This should be a warning')
logging.error('This should be an error')
print('AFTER LOG')
Run Code Online (Sandbox Code Playgroud)
当我使用函数框架在本地运行它时,它完美地工作(据我所知),像这样输出到控制台:
{"message": " * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)", "timestamp": {"seconds": 1609443581, "nanos": 119384527}, "thread": 140519851886400, "severity": "INFO"}
{"message": " * Restarting with …Run Code Online (Sandbox Code Playgroud) 我已经使用运行时 python37 部署了 Cloud Functions。我的问题是如何使用 differentseverity和 same打印或记录execution_id,这可以很容易地通过Stackdriver Logging界面按日志级别过滤。
默认情况下,print将使用相同的execution_id,但我无法指定severity.
我已经尝试了logging和google-cloud-logging,但他们无法记录execution_id对调试 GCF 有用的。

python logging google-cloud-logging google-cloud-functions stackdriver