Ведение журнала Google Stackdriver в App Engine (Python) с использованием очереди Redis

Я хочу вести журнал с помощью 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?

Мне любопытно - вы используете Регистратор Google Cloud? Также я думаю, что функция, поставленная в очередь, должна ошибаться, потому что рабочий не сможет импортировать и запустить ее, когда она является методом экземпляра.

Oluwafemi Sule 03.05.2018 21:03

Попробуйте так: перейдите в консоль GCP, App Engine и сервисы. Выберите службу, в которой вы развернули свое приложение. Справа нажмите на инструменты и выберите «Журналы». Это перенаправит страницу в журналы вашего приложения. Вы их там видите?

Rubén C. 04.05.2018 12:40

@OluwafemiSule Да, я использую регистратор Google Cloud. Работает функция постановки в очередь, о которой я упоминал из python-rq.org.

Praneeth Rajarikam 04.05.2018 12:47

@ RubénC. Я проверил все типы журналов (например, GCE, GAE, Global и т. д.), Но нигде не нашел журналов.

Praneeth Rajarikam 04.05.2018 12:48
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
4
286
1

Ответы 1

Учитывая, что вы используете клиентскую библиотеку Python, используйте функцию print() для получения желаемых результатов. Я не знаю, тестируете ли вы приложение локально или развернули.

  1. Если вы тестируете приложение локально: функция print() вывод можно найти в облачной оболочке.
  2. Если вы развернули приложение: перейдите в консоль GCP, App Engine и сервисы. Выберите сервис, в котором вы развернули ваше приложение. Справа нажмите на инструменты и выберите «Журналы». Это перенаправит страницу в журналы вашего приложения.

Более точное ведение журнала можно определить с помощью Stackdriver Logging для Python. Уровень предупреждения может быть определен. Это может помочь вам управлять своим приложением или определять интересующие события. Найдите пример кода здесь.

Вы можете найти полезное приложение Агент Stackdriver Logging, основанное на fluentd, которое работает на экземплярах вашей виртуальной машины (ВМ). Агент ведения журнала предварительно настроен для отправки журналов с экземпляров виртуальных машин в Stackdriver Logging. Для Redis доступны исходные файлы и файлы конфигурации.

Если вам нужно более общее видение, Журналы гибкой среды App Engine официальная документация может помочь вам понять различные доступные журналы.

Другие вопросы по теме