如何解决如何使用 Python 从 Google Cloud Logging 获取请求 IP 地址?
使用 Python 的 google-cloud-logging
模块,我可以遍历 GAE 应用程序的日志消息,并且我想在请求日志中列出每个项目的请求 IP 地址。 The official docs 没有提到怎么做,破解源代码并没有给我太大希望,因为日志条目大多是 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 Cloud Console 中查看相同的日志时,我看到每个日志条目都有一个 protoPayload.ip
字段 - 这正是我希望提取的字段。
解决方法
目前无法实现,因为 Python client library for Stackdriver Logging 尚不支持此功能。由于您可以查看 Entry
object 及其 code 的文档,因此无法检索包含调用者 Ip 的部分。
但是,您可以通过在每次调用 App Engine 服务时自己记录此值来实现一个技巧,因此您可以检索它。呼叫方 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']
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。