Я хочу вести журнал с помощью Stackdriver Logging в App Engine с помощью очереди Redis. Поэтому я использую для этого Redis Server, Redis Queue и Python logging. Вот мой код:
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, журналы будут храниться в Global в разделе ведения журнала Google Cloud. Очередь работает правильно, чтобы проверить, добавляю ли я текст в файл.
Похоже, что ведение журнала не работает. Если он регистрируется, где я могу найти свои журналы в Google Cloud?
Попробуйте так: перейдите в консоль GCP, App Engine и сервисы. Выберите службу, в которой вы развернули свое приложение. Справа нажмите на инструменты и выберите «Журналы». Это перенаправит страницу в журналы вашего приложения. Вы их там видите?
@OluwafemiSule Да, я использую регистратор Google Cloud. Работает функция постановки в очередь, о которой я упоминал из python-rq.org.
@ RubénC. Я проверил все типы журналов (например, GCE, GAE, Global и т. д.), Но нигде не нашел журналов.
Учитывая, что вы используете клиентскую библиотеку Python, используйте функцию print()
для получения желаемых результатов. Я не знаю, тестируете ли вы приложение локально или развернули.
print()
вывод можно найти в облачной оболочке.Более точное ведение журнала можно определить с помощью Stackdriver Logging для Python. Уровень предупреждения может быть определен. Это может помочь вам управлять своим приложением или определять интересующие события. Найдите пример кода здесь.
Вы можете найти полезное приложение Агент Stackdriver Logging, основанное на fluentd, которое работает на экземплярах вашей виртуальной машины (ВМ). Агент ведения журнала предварительно настроен для отправки журналов с экземпляров виртуальных машин в Stackdriver Logging. Для Redis доступны исходные файлы и файлы конфигурации.
Если вам нужно более общее видение, Журналы гибкой среды App Engine официальная документация может помочь вам понять различные доступные журналы.
Мне любопытно - вы используете Регистратор Google Cloud? Также я думаю, что функция, поставленная в очередь, должна ошибаться, потому что рабочий не сможет импортировать и запустить ее, когда она является методом экземпляра.