首页 > 解决方案 > 如何根据其令牌访问特定的日志条目?

问题描述

我正在尝试编写一个 python 脚本,它将检索新的日志条目并保存最后/最新条目的令牌。此令牌将在下一次运行中使用,并且将检索该令牌条目之后的日志,依此类推。

到目前为止,我有这个:

from google.cloud.logging import Client

projectName = 'my_project'

myFilter = 'resource.type = "cloudsql_database" AND log_id("cloudsql.googleapis.com/mysql.err") AND timestamp>="2021-04-20T00:00:00Z"'

client = Client(project=projectName)
entries = client.list_entries(filter_=myFilter)

fd = open("log_entries.txt", "w")
for entry in entries:
    print(entry)
    fd.write(str(entry))

fd.close()

示例输出条目:

TextEntry(
log_name='projects/my_project/logs/cloudsql.googleapis.com%2Fmysql.err',
labels=None, 
insert_id='s=90fe0e477e6e4e6e8e5017468exxxxxx;
    i=1c31xxx;
    b=c42a243698784ef88f55dfe5a4xxxxxx;
    m=53c40845xxx;
    t=5c03646e67xxx;
    x=be3568664236fxxx-0-0@a1',
severity='INFO', 
http_request=None, 
timestamp=datetime.datetime(2021, 4, 20, 2, 50, 33, 830602, tzinfo=<UTC>), 
resource=Resource(type='cloudsql_database', 
labels={'region': 'us-east4', 'database_id': 'my_project:my_instance_id', 'project_id': 'my_project'}), 
trace=None, 
span_id=None, 
trace_sampled=None, 
source_location=None, 
operation=None, 
logger=<google.cloud.logging_v2.logger.Logger object at 0x0000025FA3XXXXXX>, 
payload="2021-04-20T02:50:33.830224Z 63149802 [Note] Aborted connection 63149802 to db: 'my_db' user: 'my_user' host: 'ip_address' (Got an error reading communication packets)"
)

如您所见,没有令牌编号这样的值可以传递给 list_entries 方法。我不确定 list_entries 是否是在我的情况下使用的正确方法。谁能帮我这个?

标签: pythongoogle-cloud-platformgoogle-cloud-sql

解决方案


仅当结果多于响应中显示的结果时,才会提供令牌。

确保有更多日志,将pageSize字段设置为低于 50 的数字(这是默认值)并在此处测试 API 。
如果您仍然没有收到令牌,请使用结果更新问题。


推荐阅读