【问题标题】:Duplicated log entries in Google App Engine (Python 3)Google App Engine (Python 3) 中的重复日志条目
【发布时间】:2021-04-30 21:52:00
【问题描述】:

我很难找出我的日志条目在 Cloud Logging 中重复的原因。 我使用了一个什么都不做的自定义虚拟处理程序,并且我还使用了一个命名记录器。

这是我的代码:

import google.cloud.logging
import logging


class MyLogHandler(logging.StreamHandler):
    def emit(self, record):
        pass

# Setting Up App Engine's Logging
client = google.cloud.logging.Client()
client.get_default_handler()
client.setup_logging()

# Setting Up my custom logger/handler
my_handler = MyLogHandler()
logging.getLogger('my_logger').addHandler(my_handler)
logging.getLogger('my_logger').setLevel(logging.DEBUG)

logging.getLogger('my_logger').debug('Why this message is being duplicated?') # please note that i'm logging into 'my_logger' logger, I'm not using root logger for this message

首先,我认为此消息甚至不应该显示在 Cloud Logging 中,因为我使用的是名为“my_logger”的命名记录器,并且云记录仅附加到根记录器,但无论如何...

上面的代码被导入到我的 app.py 中,它在应用引擎上引导一个 Flask 应用。

这是问题的截图:

这个人也有类似的问题:Duplicate log entries with Google Cloud Stackdriver logging of Python code on Kubernetes Engine

但我尝试了该主题中建议的所有解决方法,但也没有用。 我在这里缺少什么吗?提前致谢。

【问题讨论】:

  • 如果您将处理程序添加到子记录器,消息仍会向上发送到根记录器并再次处理,除非您将子记录器的propagate 属性设置为False
  • 嗨,已经尝试过了,设置传播 = False 在本地工作,但不知何故,当部署到应用引擎时它不起作用,仍然重复记录。重复的记录是由同一个记录器发出的(可以通过查看 jsonPayload/python_logger 属性来确认)
  • 确保client.setup_logging() 只被调用一次。每次调用它都会添加一个新的处理程序。这发生在我身上一次,但如果没有更多上下文,我不能说这是否与您遇到的问题相同。
  • 根据官方 Google Cloud Platform documentation Cloud Logging 会自动为 App Engine 启用。因此,您的重复日志可能是由 Cloud Logging 和 Python 的 Cloud Logging 库引起的。您能否展开日志信息以确定两个日志条目是否具有相同的 insertID?

标签: python google-app-engine google-cloud-logging


【解决方案1】:
from google.cloud.logging.handlers import AppEngineHandler    

root_logger = logging.getLogger()

# use the GCP appengine handlers only in order to prevent logs from getting written to STDERR
root_logger.handlers = [handler for handler in root_logger.handlers
                        if isinstance(handler, AppEngineHandler)]

【讨论】:

    猜你喜欢
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    • 2018-05-08
    • 1970-01-01
    • 2021-02-25
    相关资源
    最近更新 更多