Есть ли способ отправить логи приложения app.task из сельдерея в стекдрайвер? - PullRequest
2 голосов
/ 29 мая 2019

Я пытался отправить журналы задач сельдерея, которые созданы по умолчанию для входа модуля Python в Stackdriver (облачная платформа Google), но мне чего-то не хватает.

В текущем состоянии все журналы выдвинуты, но я пропускаю журналыгде созданы внутри файлов задач Python.

class Logger(object):
    def __init__(self, log_level):
        formatter = CustomJsonFormatter(
            '(timestamp)(level)(name)(created)(process)(msecs)(message)'
        )
        formatter.json_ensure_ascii = False
        logger = logging.getLogger()
        logger.setLevel(log_level)
        client = google.cloud.logging.Client.from_service_account_json(
           'key.json')
        # StreamHandler
        # sh = logging.StreamHandler()
        sh = CloudLoggingHandler(client)
        sh.setLevel(log_level)
        sh.setFormatter(formatter)
        logger.addHandler(sh)


from app.utils.logger import Logger
from celery.signals import setup_logging
@setup_logging.connect
def initialize_logger(*args, **kwargs):
    Logger(log_level=log_level)

1 Ответ

0 голосов
/ 29 мая 2019

Попробуйте вместо этого:

class Logger(object):
    def __init__(self, log_level):
        formatter = CustomJsonFormatter(
            '(timestamp)(level)(name)(created)(process)(msecs)(message)'
        )
        formatter.json_ensure_ascii = False
        logger = logging.getLogger()
        logger.setLevel(log_level)

        client = google.cloud.logging.Client.from_service_account_json(
           'key.json')
        log_handler = client.get_default_handler()
        cloud_logger = logging.getLogger("cloudLogger")
        cloud_logger.setLevel(log_level)
        cloud_logger.setFormatter(formatter)
        cloud_logger.addHandler(log_handler)
...