如何通过时间戳从python

时间:2019-09-28 05:23:41

标签: python google-cloud-platform stackdriver google-cloud-stackdriver

我正在尝试从python模块获取GCP stackdriver日志。 我可以过滤来自request_id和用户的日志

但是当我尝试在两个时间段之间获取日志时,会出现错误。

import json
import sys
from google.cloud import logging
from google.cloud.logging import DESCENDING
from google.cloud import bigquery

#stackdriver client object
logging_client = logging.Client()

FILTER="logName:projects/cognitedata-europe-west1-1/logs/stdout AND timestamp>="+sys.argv[3]
results_iterator = logging_client.list_entries(filter_=FILTER,projects=PROJECT_IDS,order_by=DESCENDING,page_size=1000)

我用下面的图案来提供时间。

timestamp:sys.argv[3]
timestamp=sys.argv[3]
timestamp>sys.argv[3]
timestamp>=sys.argv[3]

但是注意解决了我的问题。

我将sys.argv 3的输入时间设置为“ 2019-09-28T03:28:04.189Z”

我的要求是从时间戳中过滤数据 enter image description here

但是在GCP堆栈驱动程序记录器UI中,它会同时给出两个结果

timestamp:"2019-09-28T03:28:04.189Z"

enter image description here

timestamp>="2019-09-28T03:28:04.189Z" AND timestamp<="2019-09-28T03:30:39.189Z" 

enter image description here

1 个答案:

答案 0 :(得分:3)

正如DazWilkin在评论中提到的,您还需要在过滤器中包含双引号。 您可以执行以下操作:

FILTER="logName:projects/cognitedata-europe-west1-1/logs/stdout AND timestamp>=" + "\"" + sys.argv[3] + "\""

如果以上内容看起来太复杂而难以阅读,则可以使用Python的单引号和双引号字符串的组合,如下所示:

FILTER='logName:projects/cognitedata-europe-west1-1/logs/stdout AND timestamp>=' + '\"' + sys.argv[3] + '\"'

注意:反斜杠(\)用于转义双引号(“)。