簡體   English   中英

Google Stackdriver使用Redis隊列登錄App Engine(Python)

[英]Google Stackdriver logging in App Engine (Python) using Redis queue

我想使用Stackdriver進行日志記錄,使用Redis隊列登錄到App Engine。 所以我正在使用Redis Server,Redis Queue和Python日志記錄來做到這一點。 這是我的代碼:

import logging
from redis import Redis
from rq import Queue
import time

class SomeClass():

def log_using_redis(self,text):
    log_text = logging.warn(text)
    f=open("stack_log.txt","a+")
    f.write(str(text))
    return "logged Successfully using redis"


def get(self):
    text = 'Hello, Logged Successfully!'+time.strftime('%a, %d %b %Y %H:%M:%S %Z(%z)')
    redis_conn = Redis()
    q = Queue(connection=redis_conn)
    job = q.enqueue(self.log_using_redis,text)
    print job.result

當我運行RQ worker時,我在終端上得到了一些輸出,但是找不到日志的存儲位置。

如果我嘗試不使用Redis進行直接日志記錄,則日志將存儲在Google Cloud日志記錄部分的Global中。 隊列工作正常,以檢查是否已將文本附加到文件中。

似乎日志記錄無法正常工作。 如果正在記錄日志,我在哪里可以在Google Cloud上找到日志?

考慮到您正在使用Python客戶端庫,請使用print()函數以獲得所需的結果。 我不知道您是在本地測試應用程序還是已部署它。

  1. 如果要在本地測試該應用程序,則可以在cloud shell中找到print()函數的輸出。
  2. 如果您已部署該應用程序:請轉到GCP控制台,App Engine和服務。 選擇已在其中部署應用程序的服務。 在右側單擊工具,然后選擇“日志”。 這會將頁面重定向到您的應用日志。

可以使用Stackdriver Logging for Python定義更精確的日志記錄 可以定義警告級別。 這可以幫助您管理應用程序或確定感興趣的事件。 在此處找到示例代碼。

您可能會發現有用的Stackdriver Logging代理 ,這是一個基於fluentd的應用程序,可在您的虛擬機(VM)實例上運行。 日志代理已預先配置為將日志從VM實例發送到Stackdriver Logging。 有可用於redis的源文件和配置文件。

如果您需要更一般的眼光, App Engine靈活的環境日志官方文檔可以幫助您了解其他可用日志。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM