我正在编写一个新的云功能,并使用在https://cloud.google.com/blog/products/devops-sre/google-cloud-logging-python-client-library-v3-0-0-release上宣布的新Google日志库。
在将代码推到GCP之前,我还使用函数框架在本地调试代码。使用Python设置和调用云函数在这里特别有用。
我遇到的问题是,当将这两件事情结合使用时,我无法在IDE中看到日志输出,只能看到print语句。下面是我的代码示例:
from flask import Request
from google.cloud import bigquery
from datetime import datetime
import google.cloud.logging
import logging
log_client = google.cloud.logging.Client()
log_client.setup_logging()
def main(request) -> str:
#
# do stuff to setup a bigquery job
#
bq_client = bigquery.Client()
job_config = bigquery.QueryJobConfig(labels={"key": "value"})
nowstr = datetime.now().strftime("%Y%m%d%H%M%S%f")
job_id = f"qwerty-{nowstr}"
query_job = bq_client.query(
query=export_script, job_config=job_config, job_id=job_id
)
print("Started job: {}".format(query_job.job_id))
query_job.result() # Waits for job to complete.
logging.info(f"job_id={query_job.job_id}")
logging.info(f"total_bytes_billed={query_job.total_bytes_billed}")
return f"{query_job.job_id} {query_job.state} {query_job.error_result}"然而,当我使用云函数运行函数时,我看到的唯一输出是在我的终端中
开始工作: qwerty-20220306181905424093
如您所见,对print(...)的调用已输出到我的终端,但对logging.info(...)的调用没有。在使用函数框架在本地运行时,是否有一种方法可以将日志输出重定向到我的终端,但在GCP中函数作为实际云函数运行时不影响日志记录?
发布于 2022-03-06 21:18:00
由于@加密傻瓜的建议,我发现我需要更改默认的日志记录级别,以便将输出显示在终端中。
from flask import Request
from google.cloud import bigquery
from datetime import datetime
import google.cloud.logging
import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
def main(request) -> str:
#
# do stuff to setup a bigquery job
#
bq_client = bigquery.Client()
job_config = bigquery.QueryJobConfig(labels={"key": "value"})
nowstr = datetime.now().strftime("%Y%m%d%H%M%S%f")
job_id = f"qwerty-{nowstr}"
query_job = bq_client.query(
query=export_script, job_config=job_config, job_id=job_id
)
print("Started job: {}".format(query_job.job_id))
query_job.result() # Waits for job to complete.
logging.info(f"job_id={query_job.job_id}")
logging.info(f"total_bytes_billed={query_job.total_bytes_billed}")
return f"{query_job.job_id} {query_job.state} {query_job.error_result}"开始工作: qwerty-20220306211233889260 信息:root:job_id=qwerty-20220306211233889260 INFO:root:total_bytes_billed=31457280
但是,当使用google.cloud.logging时,我仍然不能在终端中输出任何输出
from flask import Request
from google.cloud import bigquery
from datetime import datetime
import google.cloud.logging
import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
log_client = google.cloud.logging.Client()
log_client.setup_logging()
def main(request) -> str:
#
# do stuff to setup a bigquery job
#
bq_client = bigquery.Client()
job_config = bigquery.QueryJobConfig(labels={"key": "value"})
nowstr = datetime.now().strftime("%Y%m%d%H%M%S%f")
job_id = f"qwerty-{nowstr}"
query_job = bq_client.query(
query=export_script, job_config=job_config, job_id=job_id
)
print("Started job: {}".format(query_job.job_id))
query_job.result() # Waits for job to complete.
logging.info(f"job_id={query_job.job_id}")
logging.info(f"total_bytes_billed={query_job.total_bytes_billed}")
return f"{query_job.job_id} {query_job.state} {query_job.error_result}"开始工作: qwerty-20220306211718088936
我想我会就此再开一条线。
https://stackoverflow.com/questions/71373068
复制相似问题