簡體   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