Duplicate log entries with Google Cloud Stackdriver logging of Python code on Kubernetes Engine

前端 未结 2 1089
一生所求
一生所求 2020-12-31 07:42

I have a simple Python app running in a container on Google Kubernetes Engine. I am trying to connect the standard Python logging to Google Stackdriver logging using this gu

2条回答
  •  抹茶落季
    2020-12-31 08:17

    Problem is in the way how logging client initializes root logger

        logger = logging.getLogger()
        logger.setLevel(log_level)
        logger.addHandler(handler)
        logger.addHandler(logging.StreamHandler())
    

    it adds default stream handler in addition to Stackdriver handler. My workaround for now is to initialize appropriate Stackdriver handler manually:

                # this basically manually sets logger compatible with GKE/fluentd
                # as LoggingClient automatically add another StreamHandler - so 
                # log records are duplicated
                from google.cloud.logging.handlers import ContainerEngineHandler
                formatter = logging.Formatter("%(message)s")
                handler = ContainerEngineHandler(stream=sys.stderr)
                handler.setFormatter(formatter)
                handler.setLevel(level)
                root = logging.getLogger()
                root.addHandler(handler)
                root.setLevel(level)
    
    

提交回复
热议问题