2

我想使用 Stackdriver Logging 使用 Redis 队列记录到 App Engine。所以我正在使用 Redis 服务器、Redis 队列和 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 上的日志?

4

1 回答 1

0

考虑到您正在使用 Python 客户端库,请使用print()函数来获得所需的结果。我不知道您是在本地测试应用程序还是部署了它。

  1. 如果您在本地测试应用程序:print()可以在云 shell 中找到函数输出。
  2. 如果您已部署应用程序:转到 GCP 控制台、App Engine 和服务。选择您已在其中部署应用程序的服务。在右侧单击工具并选择“日志”。这会将页面重定向到您的应用程序日志。

可以使用Stackdriver Logging for Python定义更精确的日志记录。可以定义警告级别。这可以帮助您管理您的应用程序或识别感兴趣的事件。在此处查找示例代码。

您可能会发现有用的Stackdriver Logging 代理,这是一个基于 fluentd 的应用程序,可在您的虚拟机 (VM) 实例上运行。Logging 代理已预先配置为将日志从虚拟机实例发送到 Stackdriver Logging。有可用于redis的源文件和配置文件。

如果您想要更全面的视野,App Engine 柔性环境日志官方文档可以帮助您了解不同的可用日志。

于 2018-05-04T16:52:37.303 回答