繁体   English   中英

如何使用 Python 从 Google Cloud Logging 获取请求 IP 地址?

[英]How can i get request IP address from Google Cloud Logging using Python?

使用 Python 的google-cloud-logging模块,我可以遍历我的 GAE 应用程序的日志消息,并且我想列出请求日志中每个项目的请求 IP 地址。 官方文档没有提到如何,并且通过源代码破解并没有给我太多希望,因为日志条目主要是TextEntry很少 object 属性。

我的代码是这样的:

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字段——这正是我希望提取的字段。

由于Stackdriver Logging 的 Python 客户端库尚不支持此功能,因此目前无法实现。 您可以查看Entry object及其代码的文档,因此无法检索包含调用者的 Ip 的部分。

但是,您可以通过在每次调用 App Engine 服务时自己记录此值来做一个技巧,因此您可以检索它。 调用方 IP 的值在'X-Appengine-User-Ip' header 中。 您可以使用此代码作为如何获取它的示例:

from flask import Flask
from flask import request

app = Flask(__name__)


@app.route('/')
def hello_world():
    ip = request.headers['X-Appengine-User-Ip']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM