如何使用Google api-client python库进行Google Logging

时间:2015-12-06 09:35:09

标签: google-compute-engine google-cloud-platform google-api-client google-api-python-client

我一直在python中使用 Google apiclient library 用于各种Google Cloud API - 主要用于Google Compute - 取得了巨大的成功。

我想开始使用该库来创建和控制Google云端平台提供的 Google Logging机制

但是,这是一个测试版,我找不到任何关于如何使用日志API的真实文档或示例。

我能找到的是高级描述,例如: https://developers.google.com/apis-explorer/#p/logging/v1beta3/

有人可以提供一个关于如何使用 apiclient 进行日志记录的简单示例吗? 例如,创建一个新的日志条目......

感谢您的帮助

沙哈尔

3 个答案:

答案 0 :(得分:0)

我找到了这个页面: https://developers.google.com/api-client-library/python/guide/logging

您声明可以执行以下操作来设置日志级别:

import logging

logger = logging.getLogger()
logger.setLevel(logging.INFO)

然而,它似乎对输出没有任何影响,对我来说总是信息。

我也尝试过将httplib2设置为debuglevel 4:

import httplib2
httplib2.debuglevel = 4

但我在日志中看不到任何HTTP标头:/

答案 1 :(得分:0)

我知道这个问题已经过时了,但它得到了一些关注,所以我想它可能值得回答,万一其他人来这里。

谷歌云平台的

Stackdriver Logging Client Libraries不再处于测试阶段,因为它们在不久前达到了一般可用性。我分享的链接包含有关安装和使用它们的最相关文档。

运行命令pip install --upgrade google-cloud-logging后,您将能够使用您的GCP帐户进行身份验证,并使用客户端库。

使用它们就像使用from google.cloud import logging之类的命令导入库一样简单,然后实例化一个新客户端(默认情况下可以使用它,甚至可以传递项目ID 凭证显式),最后根据需要使用Logs。

您可能还想访问official library documentation,在那里您可以找到有关如何使用库的所有详细信息,可用的方法和类,以及如何使用大量自我执行大部分操作 - 解释性示例,甚至是如何与Stackdriver Logging交互的不同备选方案之间的比较。

作为一个小例子,让我也分享一个如何检索五个最新日志的片段,这些日志的状态比#34;警告":

更严重
# Import the Google Cloud Python client library
from google.cloud import logging
from google.cloud.logging import DESCENDING

# Instantiate a client
logging_client = logging.Client(project = <PROJECT_ID>)

# Set the filter to apply to the logs, this one retrieves GAE logs from the default service with a severity higher than "warning"
FILTER = 'resource.type:gae_app and resource.labels.module_id:default and severity>=WARNING'

i = 0
# List the entries in DESCENDING order and applying the FILTER
for entry in logging_client.list_entries(order_by=DESCENDING, filter_=FILTER):  # API call
    print('{} - Severity: {}'.format(entry.timestamp, entry.severity))
    if (i >= 5):
        break
    i += 1

请记住,这只是一个简单的示例,使用Logging Client Library可以实现许多功能,因此您应该参考我分享的官方文档页面,以便更深入地了解所有内容的工作原理。

答案 2 :(得分:0)

<块引用>

但是它似乎对输出没有任何影响 始终为我提供信息。

添加日志处理程序,例如:

formatter = logging.Formatter('%(asctime)s %(process)d %(levelname)s:  %(message)s')                                     
consoleHandler = logging.StreamHandler()                                                                                 
consoleHandler.setLevel(logging.DEBUG)                                                                                       
consoleHandler.setFormatter(formatter)                                                                                   
logger.addHandler(consoleHandler)