相关疑难解决方法(0)

设置日志记录级别

我正在尝试使用标准库来调试我的代码:

这很好用:

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)

我没有得到任何回应.

python logging

33
推荐指数
4
解决办法
3万
查看次数

stackdriver 记录客户端库缺少 python 的严重性

我想从我的应用引擎标准 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

8
推荐指数
1
解决办法
927
查看次数

如何对相关请求日志条目进行分组GAE python 3.7 standard env

我正在使用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

5
推荐指数
2
解决办法
537
查看次数

Python Google Cloud 函数缺少日志条目

我正在第一次尝试 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)

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

5
推荐指数
1
解决办法
2868
查看次数

如何在 Google Cloud Functions 中使用不同的严重性级别进行日志记录

我已经使用运行时 python37 部署了 Cloud Functions。我的问题是如何使用 differentseverity和 same打印或记录execution_id,这可以很容易地通过Stackdriver Logging界面按日志级别过滤。

默认情况下,print将使用相同的execution_id,但我无法指定severity.在此处输入图片说明

我已经尝试了logginggoogle-cloud-logging,但他们无法记录execution_id对调试 GCF 有用的。 在此处输入图片说明

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

1
推荐指数
1
解决办法
2232
查看次数