使用google-cloud-logging模块,我可以迭代我的GAE应用程序的日志消息,我想列出请求日志中每一项的请求IP地址。官方文件没有提到如何破解源代码,也没有给我太多的希望,因为日志条目大多是TextEntry,很少有对象属性。
我的代码是这样的:
logging_client = logging.Client()
logger = logging_client.logger('projects/MYPROJECT/logs/appengine.googleapis.com%2Frequest_log')
for entry in logging_client.list_entries():
timestamp = entry.timestamp.isoformat()
print("* {}, {}: {}".format(timestamp, type(entry), entry))当查看Google控制台中相同的日志时,我看到每个日志条目都有一个protoPayload.ip字段--这正是我希望提取的字段。
发布于 2021-03-10 09:45:42
这是目前不可能的,因为用于Stackdriver日志记录的Python客户端库还不支持这个特性。由于您可以签入对象及其代码的文档,因此无法检索包含调用方Ip的部分。
但是,您可以在每次调用App服务时自己记录这个值,从而可以检索它。调用方IP的值位于'X-Appengine-User-Ip'报头中。您可以使用此代码作为如何获取它的示例:
from flask import Flask
from flask import request
app = Flask(__name__)
@app.route('/')
def hello_world():
ip = request.headers['X-Appengine-User-Ip']https://stackoverflow.com/questions/66539158
复制相似问题